@burh/nuxt-core 1.0.114 → 1.0.115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,132 +1,97 @@
1
1
  <template>
2
- <div class="cv-left col-5 bg-light--darken py-5 px-5" :class=" !currentUser ? 'disable-none' : '' ">
3
- <div class="d-flex justify-content-center">
4
- <a href="#!" class="avatar avatar-pdf">
5
- <img alt="Image placeholder" :src="avatar" v-show="avatar" />
6
- <p class="h5 font-weight-bold text-muted" v-show="!avatar">
7
- {{ handleGetPrefixes(name) }}
8
- </p>
9
- </a>
2
+ <div class="bg-white content-left">
3
+ <div class="profile w-100 text-center">
4
+ <div class="avatar">
5
+ <img :src="userData.urlAvatar" :alt="userData.name" />
6
+ </div>
7
+ <h4>{{ userData.name }}</h4>
8
+ <p>Front End no Burh</p>
9
+
10
+ <span>
11
+ <i class="fas fa-map-marker-alt"></i>
12
+ {{ userData.user_address.city_name }}
13
+ </span>
10
14
  </div>
11
- <p class="text-center text-muted font-weight-bold mb-4">
12
- {{ yearsOld ? `${yearsOld} anos` : "idade não informada" }}
13
- </p>
14
-
15
- <h2 class="display-4">Contato e Endereço</h2>
16
- <p>
17
- {{ street }}, {{ number }}<br v-show="number" />
18
- {{ neighborhood }}<br v-show="neighborhood" />
19
- {{ city }} - {{ regionCode }}
20
- </p>
21
- <p>
22
- <strong>Telefone:</strong> {{ treatPhone(phone) }}<br />
23
- <strong>Celular:</strong> {{ treatCellphone(cellphone) }}<br />
24
- </p>
25
-
26
- <h2 class="display-4 mt-4" v-show="education.length">Educação</h2>
27
- <div
28
- class="mb-4"
29
- v-for="(edu, index) in education"
30
- :key="`education-${index}`"
31
- >
32
- <h3 class="h6">{{ edu.institution }}</h3>
33
- <h4 class="h6 text-muted">{{ edu.formation }}</h4>
34
- <p>
35
- {{ edu.start_month }}/{{ edu.start_year }} -
36
- {{ treatEndDate(edu.end_month, edu.end_year) }}
37
- {{ getTime(edu) }}
38
- {{
39
- edu.user_education_period
40
- ? "-" + edu.user_education_period.name
41
- : ""
42
- }}
15
+
16
+ <div class="skills title-block mt-3 ml-4">
17
+ <h5 class="font-weight-bold mb-0">Habilidades</h5>
18
+ <div class="line"></div>
19
+
20
+ <badge
21
+ rounded
22
+ type="primary"
23
+ v-for="(skill, index) in userData.user_skill"
24
+ :key="`skill-${index}`"
25
+ class="ml-1 mt-1"
26
+ >
27
+ {{ skill.skill_word }}
28
+ </badge>
29
+ </div>
30
+
31
+ <div class="languages title-block mt-3 ml-4">
32
+ <h5 class="font-weight-bold mb-0">Idiomas</h5>
33
+ <div class="line"></div>
34
+
35
+ <p v-for="(lan, index) in userData.user_language" :key="index">
36
+ {{ lan.language[0].name }} {{ languageLevel(lan.level) }}
43
37
  </p>
44
38
  </div>
45
39
 
46
- <h2 class="display-4 mt-4" v-show="courses.length">
47
- Cursos Profissionalizantes
48
- </h2>
49
- <div
50
- class="mb-4"
51
- v-for="(course, index) in courses"
52
- :key="`course-${index}`"
53
- >
54
- <h4 class="h6">{{ course.name }}</h4>
55
- <p>{{ course.institution }} {{ getTime(course) }}</p>
40
+ <div class="desidered title-block mt-3 ml-4">
41
+ <h5 class="font-weight-bold mb-0">Cargos desejados</h5>
42
+ <div class="line"></div>
43
+
44
+ <badge
45
+ rounded
46
+ type="primary"
47
+ v-for="(des, index) in userData.user_desired_job"
48
+ :key="`skill-${index}`"
49
+ class="ml-1 mt-1"
50
+ >
51
+ {{ des.occupation }}
52
+ </badge>
56
53
  </div>
57
54
 
58
- <h2 class="display-4 mt-4" v-show="languages.length">Idiomas</h2>
59
- <div
60
- class="mb-4"
61
- v-for="(lang, index) in languages"
62
- :key="`lang-${index}`"
63
- >
64
- <h4 class="h6 d-inline-block mr-3">{{ lang.language[0].name }}</h4>
65
- <el-tooltip placement="top" :content="languageLevel(lang.level)">
66
- <div class="d-inline-block">
67
- <font-awesome-icon
68
- :icon="['fas', 'star']"
69
- class="mr-2"
70
- v-for="(j, posStar) in Array(7)"
71
- :key="`level-${lang.language[0].name}-${posStar}`"
72
- :class="posStar < lang.level && 'text-warning'"
73
- />
74
- </div>
75
- </el-tooltip>
55
+ <div class="socials text-center mt-5">
56
+ <i class="fab fa-facebook fa-2x"></i>
57
+ <i class="fab fa-facebook fa-2x ml-3"></i>
58
+ <i class="fab fa-linkedin fa-2x ml-3"></i>
59
+ <i class="fab fa-chrome fa-2x ml-3"></i>
76
60
  </div>
77
61
 
78
- <h2 class="display-4 mt-4" v-show="skills.length">Habilidades</h2>
79
- <badge
80
- rounded
81
- type="primary"
82
- v-for="(skill, index) in skills"
83
- :key="`skill-${index}`"
84
- >{{ skill.skill_word }}</badge
85
- >
62
+ <div class="burh-code text-center mt-4">
63
+ <vue-qrcode
64
+ :value="baseUrl + '/' + userData.id"
65
+ :options="{ width: 98, height: 98 }"
66
+ class="border qr-code"
67
+ ></vue-qrcode>
68
+ <p>Código BURH</p>
69
+ <span>{{ userData.id }}</span>
70
+ </div>
86
71
  </div>
87
72
  </template>
88
73
 
89
74
  <script>
90
- import getPrefixes from "~/util/getPrefixes.js";
75
+ import getPrefixes from '~/util/getPrefixes.js';
76
+ import VueQrcode from '@chenfengyuan/vue-qrcode';
91
77
 
92
78
  export default {
93
- name: "user-cv-left-side",
79
+ name: 'user-cv-left-side',
80
+ components: {
81
+ VueQrcode
82
+ },
94
83
  props: {
95
- name: String,
96
- avatar: String,
97
- yearsOld: String | Number,
98
- city: String,
99
- regionCode: String,
100
- neighborhood: String,
101
- street: String,
102
- number: String,
103
- cellphone: String,
104
- phone: String,
105
- currentUser: Object,
106
- education: {
107
- type: Array,
108
- default: () => []
109
- },
110
- courses: {
111
- type: Array,
112
- default: () => []
113
- },
114
- skills: {
115
- type: Array,
116
- default: () => []
117
- },
118
- languages: {
119
- type: Array,
120
- default: () => []
121
- }
84
+ userData: Object
122
85
  },
123
- mounted(){
124
- console.log(this.currentUser)
86
+ data() {
87
+ return {
88
+ baseUrl: process.env.baseAppUrl
89
+ };
125
90
  },
126
91
  methods: {
127
92
  getTime(
128
93
  { start_year = null, end_year = null, start_month, end_month },
129
- textHappening = "Cursando"
94
+ textHappening = 'Cursando'
130
95
  ) {
131
96
  const isHappening = !end_month && !end_year;
132
97
 
@@ -135,12 +100,12 @@ export default {
135
100
  }
136
101
 
137
102
  const dateInitial = this.$moment(
138
- ["1", start_month.toString(), start_year.toString()],
139
- "DD/MM/YYYY"
103
+ ['1', start_month.toString(), start_year.toString()],
104
+ 'DD/MM/YYYY'
140
105
  );
141
106
  const dateDone = this.$moment(
142
- ["1", end_month.toString(), end_year.toString()],
143
- "DD/MM/YYYY"
107
+ ['1', end_month.toString(), end_year.toString()],
108
+ 'DD/MM/YYYY'
144
109
  );
145
110
  const diffDuration = this.$moment.duration(
146
111
  dateDone.diff(dateInitial)
@@ -156,32 +121,32 @@ export default {
156
121
  ? `(${months} meses)`
157
122
  : months == 1
158
123
  ? `(${months} mês)`
159
- : "";
124
+ : '';
160
125
  },
161
126
  languageLevel(level) {
162
127
  switch (parseInt(level)) {
163
128
  case 1:
164
- return "Iniciante";
129
+ return 'Iniciante';
165
130
  case 2:
166
- return "Elementar";
131
+ return 'Elementar';
167
132
  case 3:
168
- return "Pré-intermediário";
133
+ return 'Pré-intermediário';
169
134
  case 4:
170
- return "Intermediário";
135
+ return 'Intermediário';
171
136
  case 5:
172
- return "Intermediário Superior";
137
+ return 'Intermediário Superior';
173
138
  case 6:
174
- return "Avançado";
139
+ return 'Avançado';
175
140
  case 7:
176
- return "Fluente";
141
+ return 'Fluente';
177
142
  default:
178
- return "";
143
+ return '';
179
144
  }
180
145
  },
181
146
  treatPhone(phone) {
182
147
  if (phone) {
183
- if (phone == "0" || phone.length < 9 || !phone) {
184
- return "não cadastrado";
148
+ if (phone == '0' || phone.length < 9 || !phone) {
149
+ return 'não cadastrado';
185
150
  }
186
151
  }
187
152
 
@@ -189,50 +154,89 @@ export default {
189
154
  },
190
155
  treatCellphone(cellphone) {
191
156
  if (cellphone) {
192
- if (cellphone == "0" || cellphone.length < 11 || !cellphone) {
193
- return "não cadastrado";
157
+ if (cellphone == '0' || cellphone.length < 11 || !cellphone) {
158
+ return 'não cadastrado';
194
159
  }
195
160
  }
196
161
 
197
162
  return cellphone;
198
163
  },
199
- handleGetPrefixes(name = "") {
164
+ handleGetPrefixes(name = '') {
200
165
  return getPrefixes(name);
201
166
  },
202
167
  treatEndDate(end_month, end_year) {
203
168
  if (end_month && end_year) {
204
169
  return `${end_month}/${end_year}`;
205
170
  }
206
- return "";
171
+ return '';
207
172
  }
208
173
  }
209
174
  };
210
175
  </script>
211
176
 
212
177
  <style lang="scss" scoped>
213
- @import "@burh/nuxt-core/assets/sass/burh-ds/variables/_colors.scss";
178
+ @import '@burh/nuxt-core/assets/sass/burh-ds/variables/_colors.scss';
214
179
 
215
180
  .bg-light--darken {
216
181
  background-color: $gray-100 !important;
217
182
  }
218
183
 
219
- .avatar {
220
- &.avatar-pdf {
221
- background-color: white;
222
- width: 104px;
223
- height: 104px;
224
- border-radius: 50%;
184
+ .profile {
185
+ .avatar {
186
+ /* position: absolute; */
225
187
 
226
188
  img {
227
- width: 90px;
228
- height: 90px;
229
- z-index: 2;
189
+ width: 178.14px;
190
+ height: 163px;
230
191
  border-radius: 50%;
192
+ top: 75%;
231
193
  }
232
194
  }
195
+
196
+ p {
197
+ font-size: 13px;
198
+ font-weight: 400;
199
+ color: #8da2b5;
200
+ }
201
+
202
+ span {
203
+ font-size: 14px;
204
+ font-weight: 500;
205
+ color: #8da2b5;
206
+ }
233
207
  }
234
208
 
235
- .cv-left{
209
+ .title-block {
210
+ .line {
211
+ width: 221px;
212
+ height: 0px;
213
+
214
+ border: 1px solid #ececec;
215
+ }
216
+
217
+ p {
218
+ font-size: 13px;
219
+ }
220
+ }
221
+
222
+ .burh-code {
223
+ .qr-code {
224
+ box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
225
+ border-radius: 10px;
226
+ }
227
+
228
+ p {
229
+ font-size: 8px;
230
+ font-weight: bold;
231
+ }
232
+
233
+ span {
234
+ font-size: 12px;
235
+ font-weight: bold;
236
+ }
237
+ }
238
+
239
+ .cv-left {
236
240
  word-break: initial;
237
241
  }
238
242
 
@@ -240,4 +244,8 @@ export default {
240
244
  user-select: none;
241
245
  }
242
246
 
247
+ .content-left {
248
+ width: 25%;
249
+ height: auto;
250
+ }
243
251
  </style>
@@ -0,0 +1,286 @@
1
+ <template>
2
+ <div class="bg-white content-middle">
3
+ <div class="tools mt-3">
4
+ <button
5
+ @change="$emit(tool.event)"
6
+ class="ml-3"
7
+ v-for="(tool, index) in tools"
8
+ :key="index"
9
+ >
10
+ {{ tool.name }}
11
+ </button>
12
+ </div>
13
+
14
+ <div class="about content-block mt-5 ml-3 mr-3">
15
+ <h5 class="font-weight-bold">Sobre</h5>
16
+ <p
17
+ id="USER_ABOUT"
18
+ :class="
19
+ !wordIsLesserThan(
20
+ userData.user_complementary_information.about
21
+ ) && 'readmore'
22
+ "
23
+ >
24
+ {{ userData.user_complementary_information.about }}
25
+ </p>
26
+ <a
27
+ href="#"
28
+ aria-label="expandir conteudo"
29
+ v-show="
30
+ userData.user_complementary_information.about &&
31
+ !wordIsLesserThan(
32
+ userData.user_complementary_information.about
33
+ )
34
+ "
35
+ @click.prevent.stop="toggleReadMore($event, 'USER_ABOUT')"
36
+ >Ler mais</a
37
+ >
38
+ </div>
39
+
40
+ <h5 class="font-weight-bold mt-4 ml-3">Educação</h5>
41
+ <div
42
+ class="education ml-3"
43
+ v-for="(edu, index) in userData.user_education"
44
+ :key="index"
45
+ >
46
+ <p class="sub-title">{{ edu.formation }}</p>
47
+ <p class="info-text">{{ edu.institution }}</p>
48
+ <span class="info-text">
49
+ {{ edu.start_month }}/{{ edu.start_year }} -
50
+ {{ treatEndDate(edu.end_month, edu.end_year) }}
51
+ {{ getTime(false, edu) }}
52
+ {{
53
+ edu.user_education_period
54
+ ? '-' + edu.user_education_period.name
55
+ : ''
56
+ }}
57
+ </span>
58
+ </div>
59
+
60
+ <h5 class="font-weight-bold mt-4 ml-3">Experiência</h5>
61
+ <div
62
+ class="experience ml-3 mr-3"
63
+ v-for="(exp, index) in userData.user_experience"
64
+ :key="`experience-${index}`"
65
+ >
66
+ <p class="sub-title">{{ exp.job_title }}</p>
67
+ <p class="info-text">{{ exp.company }}, {{ exp.location }}</p>
68
+ <span class="info-text">
69
+ {{ exp.start_month }}/{{ exp.start_year }} -
70
+ {{ treatEndDate(exp.end_month, exp.end_year) }}
71
+ {{ getTime(true, exp) }}
72
+ </span>
73
+
74
+ <p
75
+ :id="`USER_EXPERIENCE`"
76
+ class="description mt-4 mb-0"
77
+ :class="!wordIsLesserThan(exp.description) && 'readmore'"
78
+ >
79
+ {{ exp.description }}
80
+ </p>
81
+
82
+ <a
83
+ href="#"
84
+ aria-label="expandir conteudo"
85
+ v-show="!wordIsLesserThan(exp.description)"
86
+ @click.prevent.stop="toggleReadMore($event, `USER_EXPERIENCE`)"
87
+ >Ler mais</a
88
+ ><br /><br />
89
+ </div>
90
+
91
+ <h5 class="font-weight-bold mt-2 ml-3">Cursos</h5>
92
+ <div
93
+ class="courses ml-3"
94
+ v-for="(cou, index) in userData.user_course"
95
+ :key="`course-${index}`"
96
+ >
97
+ <p class="sub-title">{{ cou.institution }}</p>
98
+ <p class="info-text mb-3">
99
+ {{ cou.name }} - {{ cou.end_year }}
100
+ {{ getTime(false, cou) }}
101
+ </p>
102
+ </div>
103
+ </div>
104
+ </template>
105
+
106
+ <script>
107
+ import getPrefixes from '~/util/getPrefixes.js';
108
+
109
+ export default {
110
+ name: 'user-cv-middle',
111
+ props: {
112
+ userData: Object,
113
+ tools: {
114
+ type: Array,
115
+ default: () => []
116
+ }
117
+ },
118
+ methods: {
119
+ toggleReadMore(event, id) {
120
+ const element = document.getElementById(id);
121
+ element.classList.toggle('readmore');
122
+ event.target.innerText == 'Ler mais'
123
+ ? (event.target.innerText = 'Esconder')
124
+ : (event.target.innerText = 'Ler mais');
125
+ },
126
+ getTime(
127
+ isExperience,
128
+ { start_year = null, end_year = null, start_month, end_month },
129
+ textHappening = 'Cursando'
130
+ ) {
131
+ const isHappening = !end_month && !end_year;
132
+
133
+ if (isHappening) {
134
+ return isExperience === true ? 'Atualmente' : textHappening;
135
+ }
136
+
137
+ const dateInitial = this.$moment(
138
+ ['1', start_month.toString(), start_year.toString()],
139
+ 'DD/MM/YYYY'
140
+ );
141
+ const dateDone = this.$moment(
142
+ ['1', end_month.toString(), end_year.toString()],
143
+ 'DD/MM/YYYY'
144
+ );
145
+ const diffDuration = this.$moment.duration(
146
+ dateDone.diff(dateInitial)
147
+ );
148
+ const years = diffDuration.years();
149
+ const months = diffDuration.months();
150
+
151
+ if (years) {
152
+ return years > 1 ? `(${years} anos)` : `(${years} ano)`;
153
+ }
154
+
155
+ return months > 1
156
+ ? `(${months} meses)`
157
+ : months == 1
158
+ ? `(${months} mês)`
159
+ : '';
160
+ },
161
+ languageLevel(level) {
162
+ switch (parseInt(level)) {
163
+ case 1:
164
+ return 'Iniciante';
165
+ case 2:
166
+ return 'Elementar';
167
+ case 3:
168
+ return 'Pré-intermediário';
169
+ case 4:
170
+ return 'Intermediário';
171
+ case 5:
172
+ return 'Intermediário Superior';
173
+ case 6:
174
+ return 'Avançado';
175
+ case 7:
176
+ return 'Fluente';
177
+ default:
178
+ return '';
179
+ }
180
+ },
181
+ treatPhone(phone) {
182
+ if (phone) {
183
+ if (phone == '0' || phone.length < 9 || !phone) {
184
+ return 'não cadastrado';
185
+ }
186
+ }
187
+
188
+ return phone;
189
+ },
190
+ treatCellphone(cellphone) {
191
+ if (cellphone) {
192
+ if (cellphone == '0' || cellphone.length < 11 || !cellphone) {
193
+ return 'não cadastrado';
194
+ }
195
+ }
196
+
197
+ return cellphone;
198
+ },
199
+ handleGetPrefixes(name = '') {
200
+ return getPrefixes(name);
201
+ },
202
+ treatEndDate(end_month, end_year) {
203
+ if (end_month && end_year) {
204
+ return `${end_month}/${end_year}`;
205
+ }
206
+ return '';
207
+ },
208
+ wordIsLesserThan(word, value = 300) {
209
+ return word && word.length < value;
210
+ }
211
+ }
212
+ };
213
+ </script>
214
+
215
+ <style lang="scss" scoped>
216
+ @import '@burh/nuxt-core/assets/sass/burh-ds/variables/_colors.scss';
217
+
218
+ .content-middle {
219
+ width: 50%;
220
+ border-right: 1px solid #ececec;
221
+ }
222
+
223
+ .readmore {
224
+ overflow: hidden;
225
+ text-overflow: ellipsis;
226
+ display: -webkit-box;
227
+ -webkit-line-clamp: 3;
228
+ -webkit-box-orient: vertical;
229
+ }
230
+
231
+ .tools {
232
+ flex-wrap: wrap;
233
+ button {
234
+ width: 117px;
235
+ height: 29px;
236
+ border: none;
237
+ margin-top: 15px;
238
+
239
+ background: #5983fe;
240
+ border-radius: 16px;
241
+ color: #fff;
242
+
243
+ font-size: 12px;
244
+ font-weight: 600;
245
+ }
246
+ }
247
+
248
+ .education {
249
+ margin-top: 15px;
250
+ }
251
+
252
+ .experience {
253
+ .description {
254
+ font-size: 14px;
255
+ color: #62778c;
256
+ }
257
+
258
+ a {
259
+ margin-bottom: 1px;
260
+ }
261
+ }
262
+
263
+ .sub-title {
264
+ margin-bottom: 1px;
265
+
266
+ font-weight: 600;
267
+ font-size: 14px;
268
+ line-height: 21px;
269
+ color: #62778c;
270
+ text-transform: uppercase;
271
+ }
272
+
273
+ .info-text {
274
+ margin-bottom: 1px;
275
+
276
+ font-size: 14px;
277
+ color: #8da2b5;
278
+ }
279
+
280
+ .content-block {
281
+ p {
282
+ font-size: 14px;
283
+ color: #62778c;
284
+ }
285
+ }
286
+ </style>
@@ -1,120 +1,153 @@
1
1
  <template>
2
- <div class="cv-right col-7 bg-lighter py-5 px-5" :class=" !currentUser ? 'disable-none' : '' ">
3
- <h2 class="display-4 text-center mb-4">{{name}}</h2>
4
- <p class="text-muted mb-0" v-show="wagePretesion"> Pretensão Salarial de {{wagePretesion | convertToReal}} reais.</p>
5
- <p class="text-muted" v-show="codUser">Código de indicação do usuário: <b>{{codUser}}</b></p>
6
-
7
- <h2 class="display-4" v-show="about">Sobre</h2>
8
- <p id="USER_ABOUT" class="mb-0" :class="!wordIsLesserThan(about) && 'readmore'">{{about}}</p>
9
- <a href="#" aria-label="expandir conteudo"
10
- v-show="about && !wordIsLesserThan(about)" @click.prevent.stop="toggleReadMore($event,'USER_ABOUT')">Ler mais</a>
11
-
12
- <h2 class="display-4 mt-4" v-show="experience.length">Experiência</h2>
13
-
14
- <div class="mb-4" v-for="(exp, index) in experience" :key="`exp-${index}`">
15
- <h4 class="d-inline-block h6 text-muted font-weight-bold">{{exp.job_title}} - </h4>
16
- <h5 class="d-inline-block h6 text-muted font-weight-bold">{{exp.company}}</h5>
17
- <h6>{{exp.start_month}}/{{exp.start_year}} - {{treatEndDate(exp.end_month, exp.end_year)}} {{getTime(exp, 'Trabalhando')}}</h6>
18
-
19
- <div>
20
- <p :id="`USER_EXPERIENCE-${index + 1}`" class="mb-0" :class="!wordIsLesserThan(exp.description) && 'readmore'">{{exp.description}}</p>
21
- <a href="#" aria-label="expandir conteudo"
22
- v-show="!wordIsLesserThan(exp.description)" @click.prevent.stop="toggleReadMore($event,`USER_EXPERIENCE-${index+1}`)">Ler mais</a>
23
- </div>
24
- </div>
25
-
26
- <h2 class="display-4 mt-4" v-show="roleDesireds.length">Cargos Desejados</h2>
27
-
28
- <badge rounded type="primary" class="mr-2 mb-2"
29
- v-for="(roleDesired, i) in roleDesireds" :key="`${roleDesired.occupation}-${i}`">
30
- {{roleDesired.occupation}}
31
- </badge>
32
- </div>
2
+ <div class="bg-white content-right">
3
+ <el-tabs
4
+ class="mt-3 ml-3 mr-3"
5
+ v-model="activeName"
6
+ @tab-click="handleClick"
7
+ >
8
+ <el-tab-pane label="Histórico" name="history"></el-tab-pane>
9
+ <el-tab-pane label="Notas" name="notes">
10
+ <p class="notes-title mb-0">Notas da equipe</p>
11
+ <div class="line"></div>
12
+
13
+ <div v-for="(note, index) in userNotes.notes" :key="index">
14
+ <div class="notes-baloon mt-2">
15
+ <div class="notes-text ml-4">
16
+ <p class="mb-4">{{ note.text }}</p>
17
+ </div>
18
+ <div
19
+ class="d-flex align-items-end justify-content-end mr-3"
20
+ >
21
+ <p class="notes-date">{{ note.created_at }}</p>
22
+ </div>
23
+ </div>
24
+ <div class="notes-owner d-flex mt-2">
25
+ <img :src="note.owner.avatar" :alt="note.owner.name" />
26
+ <p class="ml-1">{{ note.owner.name }}</p>
27
+ </div>
28
+ </div>
29
+
30
+ <input
31
+ class="notes-new pl-4 mt-3 form-control form-rounded"
32
+ type="text"
33
+ placeholder="Escrever anotação"
34
+ v-model="newNote"
35
+ @change="$emit('new-note', newNote, userData.id)"
36
+ />
37
+ </el-tab-pane>
38
+ </el-tabs>
39
+ </div>
33
40
  </template>
34
41
 
35
42
  <script>
43
+ import { Tabs, TabPane } from 'element-ui';
44
+
36
45
  export default {
37
- name: 'user-cv-left-side',
38
- props: {
39
- name: String,
40
- about: String,
41
- codUser: String | Number,
42
- currentUser: Object,
43
- wagePretesion: {
44
- type: Number,
45
- default: 0
46
- },
47
- experience: {
48
- type: Array,
49
- default: () => []
46
+ name: 'user-cv-left-side',
47
+ components: {
48
+ [Tabs.name]: Tabs,
49
+ [TabPane.name]: TabPane
50
50
  },
51
- roleDesireds: {
52
- type: Array,
53
- default: () => []
51
+ props: {
52
+ userData: Object,
53
+ userNotes: Object
54
54
  },
55
- },
56
- filters: {
57
- convertToReal(value) {
58
- return 'R$ ' + value.toFixed(2).replace('.', ',');
55
+
56
+ methods: {
57
+ handleClick(tab, event) {
58
+ // console.log(tab, event);
59
59
  }
60
- },
61
- methods: {
62
- toggleReadMore(event, id) {
63
- const element = document.getElementById(id)
64
- element.classList.toggle('readmore')
65
- event.target.innerText == 'Ler mais' ? event.target.innerText = 'Esconder' : event.target.innerText = 'Ler mais'
66
- },
67
- getTime({start_year = null, end_year = null, start_month, end_month }, textHappening = 'Trabalhando') {
68
- const isHappening = !end_month && !end_year
69
-
70
- if(isHappening) {
71
- return textHappening
72
- }
73
-
74
- const dateInitial = this.$moment(['1', start_month.toString(), start_year.toString()], 'DD/MM/YYYY');
75
- const dateDone = this.$moment(['1', end_month.toString(), end_year.toString()], 'DD/MM/YYYY');
76
- const diffDuration = this.$moment.duration(dateDone.diff(dateInitial));
77
- const years = diffDuration.years()
78
- const months = diffDuration.months()
79
-
80
-
81
- if(years) {
82
- return years > 1 ? `(${years} anos)` : `(${years} ano)`
83
- }
84
-
85
- return months > 1 ? `(${months} meses)` :
86
- months == 1 ? `(${months} mês)` : ''
87
60
  },
88
- treatEndDate(end_month, end_year) {
89
- if ( end_month && end_year) {
90
- return `${end_month}/${end_year}`
91
- }
92
- return ''
93
- },
94
- wordIsLesserThan(word, value = 300) {
95
- return word && word.length < value
61
+ data() {
62
+ return {
63
+ activeName: 'first',
64
+ newNote: ''
65
+ };
96
66
  }
97
- }
98
- }
67
+ };
99
68
  </script>
100
69
 
101
70
  <style lang="scss" scoped>
102
- @import "@burh/nuxt-core/assets/sass/burh-ds/variables/_colors.scss";
71
+ @import '@burh/nuxt-core/assets/sass/burh-ds/variables/_colors.scss';
103
72
 
104
73
  .readmore {
105
- overflow: hidden;
106
- text-overflow: ellipsis;
107
- display: -webkit-box;
108
- -webkit-line-clamp: 3;
109
- -webkit-box-orient: vertical;
74
+ overflow: hidden;
75
+ text-overflow: ellipsis;
76
+ display: -webkit-box;
77
+ -webkit-line-clamp: 3;
78
+ -webkit-box-orient: vertical;
110
79
  }
111
80
 
112
- .cv-right{
113
- word-break: initial;
81
+ .cv-right {
82
+ word-break: initial;
114
83
  }
115
84
 
116
85
  .disable-none {
117
86
  user-select: none;
118
87
  }
119
88
 
120
- </style>
89
+ .content-right {
90
+ width: 25%;
91
+ }
92
+
93
+ .notes-title {
94
+ font-size: 14px;
95
+ color: #1d364b;
96
+ font-weight: bold;
97
+ }
98
+
99
+ .notes-baloon {
100
+ width: 231px;
101
+ height: 77px;
102
+
103
+ background: #eff5fd;
104
+ border-radius: 10px 10px 10px 0px;
105
+ }
106
+
107
+ .notes-text {
108
+ font-size: 13px;
109
+ line-height: 19px;
110
+
111
+ color: #62778c;
112
+ }
113
+
114
+ .notes-date {
115
+ font-size: 11px;
116
+ text-align: right;
117
+
118
+ color: #8da2b5;
119
+ top: calc(50% - 17px / 2 - 444.5px);
120
+ }
121
+
122
+ .notes-owner {
123
+ img {
124
+ width: 23px;
125
+ height: 23px;
126
+ border-radius: 50%;
127
+ }
128
+
129
+ p {
130
+ font-size: 13px;
131
+ font-weight: 600;
132
+ text-transform: uppercase;
133
+
134
+ color: #62778c;
135
+ }
136
+ }
137
+
138
+ .notes-new {
139
+ width: 231px;
140
+ height: 33px;
141
+
142
+ background: #f5f5f5;
143
+ border-radius: 16.5px;
144
+ border: none;
145
+ }
146
+
147
+ .line {
148
+ width: 221px;
149
+ height: 0px;
150
+
151
+ border: 1px solid #ececec;
152
+ }
153
+ </style>
@@ -1,120 +1,136 @@
1
1
  <template>
2
- <el-dialog
3
- :visible.sync="isActive"
4
- width="70%"
5
- custom-class="position-relative"
6
- @close="$emit('close')">
7
- <template>
8
- <div class="row mx-0 user-pdf">
9
- <slot name="content"></slot>
10
- </div>
11
- <slot></slot>
12
- <div class="tools" v-show="tools.length">
13
- <el-tooltip v-for="(tool, index) in tools" :key="tool.id"
14
- placement="top" :content="tool.tooltip">
15
- <font-awesome-icon @click="$emit(tool.event)" :icon="tool.icon" class="h3 cursor-pointer text-primary" :class="index < tools.length - 1 && 'mb-4'"/>
16
- </el-tooltip>
17
- </div>
18
- <!-- <el-tooltip placement="top" :content="!showTools ? 'Exibir Ferramentas' : 'Esconder Ferramentas'">
2
+ <el-dialog
3
+ :visible.sync="isActive"
4
+ width="80%"
5
+ custom-class="position-relative"
6
+ @close="$emit('close')"
7
+ class="test-radius"
8
+ >
9
+ <template>
10
+ <div class="row d-flex justify-content-between mx-0 user-pdf">
11
+ <div class="cover-photo"></div>
12
+ <slot name="content"></slot>
13
+ </div>
14
+ <slot></slot>
15
+ <!-- <el-tooltip placement="top" :content="!showTools ? 'Exibir Ferramentas' : 'Esconder Ferramentas'">
19
16
  <span class="tool tool-show--tools">
20
17
  <font-awesome-icon :icon="['fas', !showTools ? 'expand-alt' : 'compress-alt']" class="h3 text-primary"
21
18
  @click="showTools = !showTools"/>
22
19
  </span>
23
20
  </el-tooltip> -->
24
- <el-tooltip placement="top" :content="'Fechar'">
25
- <span class="tool tool-close">
26
- <font-awesome-icon :icon="['fas', 'times']" class="h3 text-primary"
27
- @click="$emit('close')"/>
28
- </span>
29
- </el-tooltip>
30
- </template>
31
- </el-dialog>
21
+ <span class="tool tool-close" @click="$emit('close')">
22
+ Fechar
23
+ <font-awesome-icon
24
+ :icon="['fas', 'times']"
25
+ class="text-white ml-1"
26
+ />
27
+ </span>
28
+ </template>
29
+ </el-dialog>
32
30
  </template>
33
31
 
34
32
  <script>
35
- import { Dialog } from 'element-ui'
33
+ import { Dialog } from 'element-ui';
36
34
 
37
35
  export default {
38
- name: 'user-curriculum',
39
- components: {
40
- [Dialog.name]: Dialog,
41
- },
42
- props: {
43
- show: {
44
- type: Boolean,
45
- default: false,
46
- },
47
- tools: {
48
- type: Array,
49
- default: () => ([])
50
- },
51
- },
52
- data() {
53
- return {
54
- isActive: this.show,
55
- showTools: false,
56
- }
57
- },
58
- watch: {
59
- show(value) {
60
- this.isActive = value
61
- }
62
- },
63
- }
36
+ name: 'user-curriculum',
37
+ components: {
38
+ [Dialog.name]: Dialog
39
+ },
40
+ props: {
41
+ show: {
42
+ type: Boolean,
43
+ default: false
44
+ },
45
+ tools: {
46
+ type: Array,
47
+ default: () => []
48
+ }
49
+ },
50
+ data() {
51
+ return {
52
+ isActive: this.show,
53
+ showTools: false,
54
+ coverPhoto: this.cover
55
+ };
56
+ },
57
+ watch: {
58
+ show(value) {
59
+ this.isActive = value;
60
+ }
61
+ }
62
+ };
64
63
  </script>
65
64
 
66
65
  <style lang="scss" scoped>
67
- @import "@burh/nuxt-core/assets/sass/burh-ds/variables/_colors.scss";
66
+ @import '@burh/nuxt-core/assets/sass/burh-ds/variables/_colors.scss';
68
67
 
69
68
  /deep/ .el-dialog__body {
70
- padding: 0;
69
+ padding: 0;
71
70
  }
72
71
 
73
72
  /deep/ .el-dialog__header {
74
- display: none;
73
+ display: none;
75
74
  }
76
75
 
77
- .tools {
78
- position: absolute;
79
- top: 0;
80
- display: flex;
81
- justify-content: center;
82
- align-items: center;
83
- flex-direction: column;
84
- right: -70px;
85
- width: 70px;
86
- padding: 1rem;
87
- background-color: $base-light;
88
- border-top-right-radius: 23px;
89
- border-bottom-right-radius: 23px;
90
- opacity: 1;
91
- transition: all .2s ease-in-out .2s;
92
-
93
- &.hide {
94
- opacity: 0;
95
- pointer-events: none;
96
- }
76
+ .test-radius {
77
+ border-radius: 10px;
97
78
  }
98
79
 
99
80
  .tool {
100
- position: absolute;
101
- top: 1rem;
102
- z-index: 10;
103
- color: $primary;
104
- cursor: pointer;
81
+ position: absolute;
82
+ top: 1rem;
83
+ z-index: 10;
84
+ color: $primary;
85
+ cursor: pointer;
105
86
 
106
- &-show--tools {
107
- right: 1.5rem;
108
- }
87
+ &-show--tools {
88
+ right: 1.5rem;
89
+ }
109
90
 
110
- &-close{
111
- right: 1.5rem
112
- }
91
+ &-close {
92
+ position: absolute;
93
+ width: 104.93px;
94
+ height: 28px;
95
+ right: 1.5rem;
96
+ display: flex;
97
+ justify-content: center;
98
+ align-items: center;
99
+
100
+ font-weight: 600;
101
+ background: rgba(0, 0, 0, 0.2);
102
+ border-radius: 17.5px;
103
+ color: #fff;
104
+ }
113
105
  }
114
106
 
115
107
  .user-pdf {
116
- background-color: $primary;
117
- // clip-path: polygon(0 12%, 10% 0, 100% 0, 100% 100%, 0 100%);
118
- clip-path: polygon(10% 0%, 100% 0, 100% 10%, 100% 90%, 90% 100%, 10% 100%, 0 100%, 0% 10%);
108
+ background-color: #fff;
109
+ // clip-path: polygon(0 12%, 10% 0, 100% 0, 100% 100%, 0 100%);
110
+ /* clip-path: polygon(
111
+ 10% 0%,
112
+ 100% 0,
113
+ 100% 10%,
114
+ 100% 90%,
115
+ 90% 100%,
116
+ 10% 100%,
117
+ 0 100%,
118
+ 0% 10%
119
+ ); */
120
+
121
+ .cover-photo {
122
+ width: 100%;
123
+ height: 150px;
124
+ /* background: $primary; */
125
+
126
+ background: linear-gradient(
127
+ to top,
128
+ rgba(29, 161, 241, 0.2),
129
+ rgba(29, 161, 241, 0.2)
130
+ ),
131
+ url('https://images.pexels.com/photos/546819/pexels-photo-546819.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940');
132
+ background-size: cover;
133
+ background-repeat: no-repeat;
134
+ }
119
135
  }
120
- </style>
136
+ </style>
@@ -116,14 +116,18 @@ export default {
116
116
  </script>
117
117
  <style lang="scss">
118
118
  .ql-clipboard {
119
- display: none;
119
+ display: none;
120
120
  }
121
121
  .ql-editor {
122
- margin-bottom: 1.5rem;
123
- resize: vertical;
124
- overflow-y: scroll;
122
+ strong {
123
+ font-weight: bold;
124
+ }
125
+ margin-bottom: 1.5rem;
126
+ resize: vertical;
127
+ overflow-y: scroll;
128
+ font-family: Poppins, Open Sans, sans-serif;
125
129
  }
126
130
  .ql-container.ql-snow {
127
- border: 0;
131
+ border: 0;
128
132
  }
129
133
  </style>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burh/nuxt-core",
3
- "version": "1.0.114",
3
+ "version": "1.0.115",
4
4
  "description": "Design System and Components.",
5
5
  "author": "Burh",
6
6
  "scripts": {
@@ -72,6 +72,7 @@
72
72
  "vue-flatpickr-component": "^8.1.2",
73
73
  "vue-form-generator": "^2.3.4",
74
74
  "vue-loading-overlay": "^3.3.2",
75
+ "vue-nav-tabs": "^0.5.7",
75
76
  "vue-plain-pagination": "^0.3.0",
76
77
  "vue-the-mask": "^0.11.1",
77
78
  "vue2-transitions": "^0.3.0",
@@ -1,4 +1,4 @@
1
1
  import Vue from 'vue';
2
2
  import VueQrcode from '@chenfengyuan/vue-qrcode';
3
3
 
4
- Vue.component(VueQrcode.name, VueQrcode);
4
+ Vue.component(VueQrcode, VueQrcode);