Skip to content

Commit

Permalink
veevalidate uiv typeahead
Browse files Browse the repository at this point in the history
  • Loading branch information
sanketss84 committed May 24, 2018
1 parent fefbf4a commit c33c6fe
Show file tree
Hide file tree
Showing 8 changed files with 186 additions and 15 deletions.
8 changes: 8 additions & 0 deletions npm-shrinkwrap.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"axios": "^0.18.0",
"bootstrap-vue": "^2.0.0-rc.6",
"jquery": "^3.3.1",
"uiv": "^0.22.0",
"vee-validate": "^2.0.6",
"vue": "^2.5.11",
"vue-router": "^3.0.1",
Expand Down
7 changes: 7 additions & 0 deletions src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@
<app-veeval></app-veeval>
</b-tab>

<b-tab title="UIV typeahead">
<app-uiv-ta></app-uiv-ta>
</b-tab>

<!-- RMS -->
<b-tab title="RMS" active>
<app-rms-recipepage></app-rms-recipepage>
Expand All @@ -66,6 +70,7 @@ import BVFooter from './components/bootstrapvue/BVFooter.vue';
import bsvue from './components/bootstrapvue/BootstrapVueLearn.vue';
import bvue from './components/bootstrap/BootstrapLearn.vue';
import veeval from './components/veevalidate/VeeValidateLearn.vue';
import uivta from './components/uivta/uivtaLearn.vue';
//RMS
import RecipePage from './components/rms/RecipePage/RecipePage.vue';
Expand All @@ -82,8 +87,10 @@ export default {
'app-bsvue' : bsvue,
'app-bvue' : bvue,
'app-veeval' : veeval,
'app-uiv-ta' : uivta,
'app-rms-recipepage' : RecipePage,
'app-bvfooter' : BVFooter
}
}
</script>
Expand Down
49 changes: 34 additions & 15 deletions src/components/rms/RecipePage/RecipeCreateModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@
<b-modal id="recipecreatemodal" ref="recipecreatemodal" size="lg" title="Create New Recipe" hide-footer>
<div class="container">
<div class="form-group row">

<label class="col-3" for="modalproject" >Assign to Project</label>
<select id="modalproject" class="form-control col-8" v-model="recipeCreateModel.selectedProjectId">
<select v-validate="'required'" name="projectNumber" id="modalproject" class="form-control col-8" v-model="recipeCreateModel.selectedProjectId">
<option value="" selected disabled>Select Project (Project must already exist)</option>
<option v-for="project in recipeCreateModel.projects" :value="project.projectId" >{{project.projectName}}</option>
</select>
<span class="text-danger">{{ errors.first('projectNumber') }}</span>
</div>
<div class="form-group row">
<label class="col-3" for="modalchapter" >Assign to Chapter</label>
<select id="modalchapter" class="form-control col-8" v-model="recipeCreateModel.selectedChapterId" >
<select v-validate="'required'" name="chapterNumber" id="modalchapter" class="form-control col-8" v-model="recipeCreateModel.selectedChapterId" >
<option value="" selected disabled>Select Chapter</option>
<option v-for="chapter in recipeCreateModel.filteredChapters" :value="chapter.chapterId" >{{chapter.chapterName}}</option>
</select>

<span class="text-danger">{{ errors.first('chapterNumber') }}</span>
</div>
</div>
<b-btn class="mt-3" @click="okButtonHandler">OK</b-btn>
Expand Down Expand Up @@ -64,7 +64,35 @@
}
},
methods : {
okButtonHandler () {
okButtonHandler (evt) {
evt.preventDefault()

this.$validator.validateAll().then((result) => {
if (result) {
alert('Form Submitted!');
this.$refs.recipecreatemodal.hide();
return;
}
alert('Correct them errors!');
});

// if (this.recipeCreateModel.selectedProjectId == '' && this.recipeCreateModel.selectedChapterId == '') {
// alert('Please specify mandatory fields');
// } else {
// var payload = {
// createModalTriggered : true,
// projectId : this.recipeCreateModel.selectedProjectId,
// chapterId : this.recipeCreateModel.selectedChapterId
// };

// this.$store.commit('recipeStore/setRecipeCreateModal',payload);
// console.log(this.$store.state.recipeStore.recipeCreateModalTriggered);

// //hide the modal
// this.$refs.recipecreatemodal.hide();

// }

// console.log(this.recipeCreateModel.selectedProjectId);
// console.log(this.recipeCreateModel.selectedChapterId);
// console.log(this.$store.state.recipeStore.recipeCreateModalTriggered);
Expand All @@ -78,17 +106,7 @@
//this.$store.state.recipeStore.recipeCreateModalProjectId = this.recipeCreateModel.selectedProjectId;
//this.$store.state.recipeStore.recipeCreateModalChapterId = this.recipeCreateModel.selectedChapterId;

var payload = {
createModalTriggered : true,
projectId : this.recipeCreateModel.selectedProjectId,
chapterId : this.recipeCreateModel.selectedChapterId
};

this.$store.commit('recipeStore/setRecipeCreateModal',payload);
console.log(this.$store.state.recipeStore.recipeCreateModalTriggered);

//hide the modal
this.$refs.recipecreatemodal.hide();
},
cancelButtonHandler() {
// console.log('cancelled');
Expand All @@ -101,6 +119,7 @@
this.recipeCreateModel.selectedProjectId = '';
this.recipeCreateModel.selectedChapterId = '';
console.log('recipeCreateModel is reset');
this.errors.clear();
}
},
computed : {
Expand Down
43 changes: 43 additions & 0 deletions src/components/uivta/uivtaLearn.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<template>
<div>
<h3>UIV Type Ahead</h3>
<label for="input-2">States of America:</label>
<input id="input-2" class="form-control" type="text" placeholder="Type to search...">
<typeahead v-model="model" target="#input-2" match-start :data="states" item-key="name"/>
<br/>
<alert v-show="model">You selected {{model}}</alert>
</div>
</template>

<script>
export default {
data () {
return {
model: '',
states: [
{"name": "Minnesota", "abbreviation": "MN" },
{"name": "New York", "abbreviation": "NY"},
{"name": "South Carolina", "abbreviation": "SC"}
],
}
}
}
</script>

<style scoped>
.dropdown-menu {
display: block;
}
li {
display: block;
margin: 0 10px;
a:hover {
color: #fff;
text-decoration: none;
outline: 0;
background-color: #337ab7;
}
}
</style>
24 changes: 24 additions & 0 deletions src/components/veevalidate/VeeForm.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,38 @@
<br>
<span v-show="errors.has('email')" class="help is-danger">{{ errors.first('email') }}</span>
</p>

<p>
<label for="modalproject" style="padding-right:2px;padding-left:5px;">Assign to Project</label>

<select v-validate="'required'" :class="{'input': true, 'is-danger': errors.has('project') }" name="project" id="modalproject" class="form-control" v-model="recipeCopyModel.selectedProjectNumber">
<option value="" selected disabled>Select Project (Project must already exist)</option>
<option v-for="project in recipeCopyModel.projects" v-bind:value="project.projectId" >{{project.projectName}}</option>
</select>
<!-- <br> -->
<span v-show="errors.has('project')" class="help is-danger">{{ errors.first('project') }}</span>
</p>

</div>

</div>
</template>

<script>
export default {
data() {
return {
recipeCopyModel: {
selectedProject : '',
projects: [
{ projectId: 'p1', projectName: 'project A' },
{ projectId: 'p2', projectName: 'project B' },
{ projectId: 'p3', projectName: 'project C' },
],
}
}
},
}
</script>

Expand Down
67 changes: 67 additions & 0 deletions src/components/veevalidate/VeeForm2.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<template>
<form @submit.prevent="validateBeforeSubmit">
<div class="column is-12">
<label class="label">Email</label>
<p class="control has-icon has-icon-right">
<input name="email" v-model="email" v-validate="'required|email'" :class="{'input': true, 'is-danger': errors.has('email') }" type="text" placeholder="Email">
<i v-show="errors.has('email')" class="fa fa-warning"></i>
<span v-show="errors.has('email')" class="help is-danger">{{ errors.first('email') }}</span>
</p>
</div>
<div class="column is-12">
<label class="label">Name</label>
<p class="control has-icon has-icon-right">
<input name="name" v-model="name" v-validate="'required|alpha'" :class="{'input': true, 'is-danger': errors.has('name') }" type="text" placeholder="Name">
<i v-show="errors.has('name')" class="fa fa-warning"></i>
<span v-show="errors.has('name')" class="help is-danger">{{ errors.first('name') }}</span>
</p>
</div>
<div class="column is-12">
<label class="label">Phone</label>
<p class="control has-icon has-icon-right">
<input name="phone" v-model="phone" v-validate="'required|numeric'" :class="{'input': true, 'is-danger': errors.has('phone') }" type="text" placeholder="Phone">
<i v-show="errors.has('phone')" class="fa fa-warning"></i>
<span v-show="errors.has('phone')" class="help is-danger">{{ errors.first('phone') }}</span>
</p>
</div>
<div class="column is-12">
<label class="label">Website</label>
<p class="control has-icon has-icon-right">
<input name="url" v-model="url" v-validate="'required|url'" :class="{'input': true, 'is-danger': errors.has('url') }" type="text" placeholder="Website">
<i v-show="errors.has('url')" class="fa fa-warning"></i>
<span v-show="errors.has('url')" class="help is-danger">{{ errors.first('url') }}</span>
</p>
</div>

<div class="column is-12">
<p class="control">
<button class="button is-primary" type="submit">Submit</button>
</p>
</div>
</form>
</template>

<script>
export default {
name: 'form-example',
data: () => ({
email: '',
name: '',
phone: '',
url: ''
}),
methods: {
validateBeforeSubmit() {
this.$validator.validateAll().then((result) => {
if (result) {
// eslint-disable-next-line
alert('Form Submitted!');
return;
}
alert('Correct them errors!');
});
}
}
};
</script>
2 changes: 2 additions & 0 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ import VeeValidate from 'vee-validate';
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'
import { store } from './components/Store/Store';
import * as uiv from 'uiv'

import App from './App.vue';

Vue.use(BootstrapVue);
Vue.use(VeeValidate);
Vue.use(uiv);

new Vue({
el: '#app',
Expand Down

0 comments on commit c33c6fe

Please sign in to comment.