Skip to content

Commit 06fff87

Browse files
committed
validate links form
1 parent 70df101 commit 06fff87

31 files changed

+13260
-0
lines changed

.github/FUNDING.yml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# These are supported funding model platforms
2+
3+
github: SAKHRIHOUSSEM # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4+
patreon: HOUSSEMSAKHRI # Replace with a single Patreon username
5+
open_collective: # Replace with a single Open Collective username
6+
ko_fi: SAKHRIHOUSSEM # Replace with a single Ko-fi username
7+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9+
liberapay: # Replace with a single Liberapay username
10+
issuehunt: # Replace with a single IssueHunt username
11+
otechie: # Replace with a single Otechie username
12+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

README.md

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# vue-resume
2+
a live resume builder unsing vuejs
3+
4+
## Project setup
5+
```
6+
npm install
7+
```
8+
9+
### Compiles and hot-reloads for development
10+
```
11+
npm run serve
12+
```
13+
14+
### Compiles and minifies for production
15+
```
16+
npm run build
17+
```
18+
19+
### Lints and fixes files
20+
```
21+
npm run lint
22+
```
23+
24+
### Customize configuration
25+
See [Configuration Reference](https://cli.vuejs.org/config/).

babel.config.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = {
2+
presets: [
3+
'@vue/cli-plugin-babel/preset'
4+
]
5+
}

git

Whitespace-only changes.

package-lock.json

+11,871
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{
2+
"name": "vue-resume",
3+
"version": "0.1.0",
4+
"private": true,
5+
"scripts": {
6+
"serve": "vue-cli-service serve",
7+
"build": "vue-cli-service build",
8+
"lint": "vue-cli-service lint"
9+
},
10+
"dependencies": {
11+
"@fortawesome/fontawesome-svg-core": "^1.2.27",
12+
"@fortawesome/free-brands-svg-icons": "^5.12.1",
13+
"@fortawesome/free-solid-svg-icons": "^5.12.1",
14+
"@fortawesome/vue-fontawesome": "^0.1.9",
15+
"bootstrap": "^4.4.1",
16+
"bootstrap-vue": "^2.8.0",
17+
"core-js": "^3.6.4",
18+
"date-fns": "^1.30.1",
19+
"vee-validate": "^3.2.5",
20+
"vue": "^2.6.11",
21+
"vue2-datepicker": "^3.4.1",
22+
"vuex": "^3.1.3"
23+
},
24+
"devDependencies": {
25+
"@vue/cli-plugin-babel": "~4.2.0",
26+
"@vue/cli-plugin-eslint": "~4.2.0",
27+
"@vue/cli-service": "~4.2.0",
28+
"babel-eslint": "^10.0.3",
29+
"eslint": "^6.7.2",
30+
"eslint-plugin-vue": "^6.1.2",
31+
"vue-template-compiler": "^2.6.11"
32+
},
33+
"eslintConfig": {
34+
"root": true,
35+
"env": {
36+
"node": true
37+
},
38+
"extends": [
39+
"plugin:vue/essential",
40+
"eslint:recommended"
41+
],
42+
"parserOptions": {
43+
"parser": "babel-eslint"
44+
},
45+
"rules": {}
46+
},
47+
"browserslist": [
48+
"> 1%",
49+
"last 2 versions"
50+
]
51+
}

public/favicon.ico

4.19 KB
Binary file not shown.

public/index.html

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8">
5+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
6+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
7+
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
8+
<title><%= htmlWebpackPlugin.options.title %></title>
9+
</head>
10+
<body>
11+
<noscript>
12+
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
13+
</noscript>
14+
<div id="app"></div>
15+
<!-- built files will be auto injected -->
16+
</body>
17+
</html>

src/App.vue

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<template>
2+
<div>
3+
<app-header/>
4+
<app-container/>
5+
</div>
6+
</template>
7+
8+
<script>
9+
import appHeader from './components/Header.vue'
10+
import appContainer from './components/Container.vue'
11+
12+
export default {
13+
name: 'App',
14+
components: {
15+
appHeader,
16+
appContainer,
17+
}
18+
}
19+
</script>

src/assets/logo.png

6.69 KB
Loading

src/components/Container.vue

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<template>
2+
<b-container fluid>
3+
<b-row>
4+
<app-sidebar class="p-2"></app-sidebar>
5+
<b-col md="9" cols="12" class="bg-light p-4">
6+
<b-row>
7+
<b-col class="bg-white" cols="12" lg="8" offset-lg="2">
8+
<paper/>
9+
</b-col>
10+
</b-row>
11+
</b-col> </b-row>
12+
</b-container>
13+
</template>
14+
15+
<script>
16+
import appSidebar from './SideBar'
17+
import paper from './Paper.vue'
18+
19+
export default {
20+
name: 'appContainer',
21+
components: {
22+
appSidebar,
23+
paper
24+
}
25+
}
26+
</script>

src/components/Header.vue

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<template>
2+
<b-navbar toggleable="lg" type="dark" variant="info">
3+
<b-navbar-brand href="#">Vue Resume</b-navbar-brand>
4+
</b-navbar>
5+
</template>
6+
7+
<script>
8+
export default {
9+
name: 'appHeader',
10+
}
11+
</script>
12+
13+
<!-- Add "scoped" attribute to limit CSS to this component only -->
14+
<style scoped>
15+
16+
</style>

src/components/Paper.vue

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<template>
2+
<b-row>
3+
<paper-side class="bg-info p-3 text-white"></paper-side>
4+
<paper-content class="pt-5 p-3"></paper-content>
5+
</b-row>
6+
</template>
7+
8+
<script>
9+
import paperSide from './paper/side'
10+
import paperContent from './paper/content'
11+
12+
export default {
13+
name: 'paper',
14+
components: {
15+
paperSide,
16+
paperContent
17+
}
18+
}
19+
</script>

src/components/SideBar.vue

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<template>
2+
<b-col cols="12" md="3">
3+
4+
<full-name/>
5+
6+
<job/>
7+
8+
<b-row>
9+
<b-col>
10+
<phone/>
11+
</b-col>
12+
13+
<b-col>
14+
<email/>
15+
</b-col>
16+
</b-row>
17+
18+
<links/>
19+
20+
<social/>
21+
22+
<resume/>
23+
24+
<b-tabs content-class="mt-3">
25+
26+
<experience/>
27+
28+
<project/>
29+
30+
<education/>
31+
32+
<skill/>
33+
34+
<language/>
35+
36+
<interest/>
37+
38+
</b-tabs>
39+
40+
</b-col>
41+
</template>
42+
43+
<script>
44+
import fullName from "./form/fullName";
45+
import job from "./form/job";
46+
import phone from "./form/phone";
47+
import email from "./form/email";
48+
import links from "./form/links";
49+
import social from "./form/social.vue";
50+
import resume from "./form/resume.vue";
51+
import experience from "./form/experience.vue";
52+
import project from "./form/project.vue";
53+
import education from "./form/education.vue";
54+
import skill from "./form/skill.vue";
55+
import language from "./form/language.vue";
56+
import interest from "./form/interest.vue";
57+
58+
export default {
59+
name: 'appSidebar',
60+
components: {
61+
fullName,
62+
job,
63+
phone,
64+
email,
65+
links,
66+
social,
67+
resume,
68+
experience,
69+
project,
70+
education,
71+
skill,
72+
language,
73+
interest,
74+
},
75+
data() {
76+
return {
77+
}
78+
},
79+
}
80+
</script>

src/components/form/education.vue

+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<template>
2+
<b-tab title="Education">
3+
<b-form @submit.prevent="onSubmit">
4+
<b-form-group
5+
label="education Degree:"
6+
label-for="education-degree"
7+
>
8+
<b-form-input
9+
id="education-degree"
10+
type="text"
11+
v-model="education.degree"
12+
required
13+
placeholder="Enter your education degree"
14+
></b-form-input>
15+
</b-form-group>
16+
17+
<b-form-group
18+
label="school Name :"
19+
label-for="education-school"
20+
>
21+
<b-form-input
22+
id="education-school"
23+
type="text"
24+
v-model="education.school"
25+
required
26+
placeholder="Enter your education school name"
27+
></b-form-input>
28+
</b-form-group>
29+
<b-form-group
30+
label="From - To :"
31+
label-for="education-from-to"
32+
>
33+
<date-picker :input-attr="{ name: 'education-from-to', id: 'education-from-to'}" class="w-100" valueType="MMMM-YYYY" v-model="education.fromTo" range ></date-picker>
34+
</b-form-group>
35+
36+
<b-form-group
37+
label="Description :"
38+
label-for="education-description"
39+
>
40+
<b-form-textarea
41+
id="education-description"
42+
v-model="education.description"
43+
placeholder="write your something about your education..."
44+
rows="3"
45+
max-rows="6"
46+
></b-form-textarea>
47+
</b-form-group>
48+
<b-form-group label="add Relative Tags:" label-for="education-tags">
49+
<b-form-tags
50+
tag-variant="info"
51+
input-id="education-tags"
52+
separator=" ,;"
53+
v-model="education.tags"
54+
class="mb-2"
55+
remove-on-delete
56+
></b-form-tags>
57+
<b-button block type="submit" variant="info">
58+
<font-awesome-icon icon="plus"></font-awesome-icon>
59+
</b-button>
60+
</b-form-group>
61+
</b-form>
62+
</b-tab>
63+
</template>
64+
65+
<script>
66+
export default {
67+
name: 'education',
68+
data() {
69+
return {
70+
education: {
71+
degree: '',
72+
school: '',
73+
fromTo: '',
74+
description: '',
75+
tags: []
76+
}
77+
}
78+
},
79+
methods: {
80+
//todo: add validation
81+
onSubmit() {
82+
this.$store.commit('appendStateField', {
83+
field: 'educations',
84+
value: {
85+
degree: this.education.degree,
86+
school: this.education.school,
87+
fromTo: this.education.fromTo,
88+
description: this.education.description,
89+
tags: this.education.tags,
90+
}
91+
})
92+
}
93+
}
94+
}
95+
</script>

0 commit comments

Comments
 (0)