Skip to content

Commit e01ffef

Browse files
authored
Merge pull request #43 from 14nrv/dev
Fix: add required rule
2 parents ccc45d7 + 91d817c commit e01ffef

File tree

5 files changed

+25
-13
lines changed

5 files changed

+25
-13
lines changed

README.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,10 @@ Object.keys(rules).forEach(rule => {
7474
```html
7575
<template lang="pug">
7676
#app.section
77-
form-json(:formFields="jsonFields",
78-
:formName="'userProfil'"
77+
form-json(:btnReset="{value: 'Reset'}",
7978
:btnSubmit="{value: 'Submit'}",
80-
:btnReset="{value: 'Reset'}")
79+
:formFields="jsonFields",
80+
formName="userProfil")
8181
div(slot="slotNameAddedInJsonFields")
8282
p Your slot content
8383
</template>
@@ -91,11 +91,11 @@ Object.keys(rules).forEach(rule => {
9191
components: {
9292
formJson
9393
},
94-
data: () => ({
95-
jsonFields
96-
}),
9794
mounted () {
9895
this.$root.$on('formSubmitted', values => alert(JSON.stringify(values)))
96+
},
97+
computed: {
98+
jsonFields: () => jsonFields
9999
}
100100
}
101101
</script>

src/App.vue

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<template lang="pug">
22
#app.section
3-
app-form(:formFields="jsonFields",
4-
formName="userProfil",
3+
app-form(:btnReset="{value: 'Reset'}",
54
:btnSubmit="{value: 'Submit'}",
6-
:btnReset="{value: 'Reset'}")
5+
:formFields="jsonFields",
6+
formName="userProfil")
77
div(slot="boxSlot")
88
.box
99
article
@@ -24,11 +24,11 @@ export default {
2424
components: {
2525
appForm: Form
2626
},
27-
data: () => ({
28-
jsonFields
29-
}),
3027
mounted () {
3128
this.$root.$on('formSubmitted', values => alert(JSON.stringify(values)))
29+
},
30+
computed: {
31+
jsonFields: () => jsonFields
3232
}
3333
}
3434
</script>

src/components/Fields/Control.vue

+2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ export default {
6969
},
7070
getRules () {
7171
const { rules = {}, pattern } = this.item
72+
rules.required = this.item.isRequired !== false
73+
7274
let validation
7375
pattern && (validation = { regex: new RegExp(pattern) })
7476
return { ...rules, ...validation }

src/components/Form/Form.spec.js

+7
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,13 @@ describe('Form', () => {
275275
expect($inputSubmit).toHaveAttribute('disabled', 'disabled')
276276
})
277277

278+
it('has submit btn disabled if no default value in field', async () => {
279+
await wrapper.setProps({ formFields: [{ label: 'a label' }] })
280+
await flush()
281+
282+
expect($inputSubmit).toHaveAttribute('disabled', 'disabled')
283+
})
284+
278285
it('enables submit input if all fields are valid', async () => {
279286
await flush()
280287
expect($inputSubmit).toHaveAttribute('disabled', 'disabled')

src/components/Form/fields.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222
[
2323
{
2424
"label": "Email",
25-
"type": "email"
25+
"type": "email",
26+
"rules": {
27+
"email": true
28+
}
2629
},
2730
{
2831
"label": "Phone Number",

0 commit comments

Comments
 (0)