Skip to content

Commit 7570281

Browse files
authored
Merge pull request #315 from Lemoncode/epic/cv-monochrome-force
Implement CV monochrome force
2 parents eb72011 + 58938b7 commit 7570281

File tree

89 files changed

+1813
-70
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+1813
-70
lines changed

apps/react-app/src/pods/template-export/components/export-config/export-config.component.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ interface Props {
1717
}
1818

1919
const DOWNLOAD_MESSAGE_TIMEOUT = 2500;
20-
const DESING_OPTIONS: TemplateCV[] = ['Sith Elegance', 'Galactic CleanTech'];
20+
const DESIGN_OPTIONS: TemplateCV[] = ['Sith Elegance', 'Galactic CleanTech', 'Monochrome Force'];
2121
const LANGUAGE_OPTIONS: Language[] = ['es', 'en'];
2222

2323
export const ExportConfig: React.FC<Props> = props => {
@@ -73,7 +73,7 @@ export const ExportConfig: React.FC<Props> = props => {
7373
<div className={classes.optionsContainer}>
7474
<div className={classes.optionsContent}>
7575
<div className={classes.selectContainer}>
76-
<CustomSelect listOptions={DESING_OPTIONS} onSelectedOption={handleTemplateChange} label={'Diseño'} />
76+
<CustomSelect listOptions={DESIGN_OPTIONS} onSelectedOption={handleTemplateChange} label={'Diseño'} />
7777
{/* Uncomment when we have all label translations */}
7878
{/* <CustomSelect
7979
listOptions={LANGUAGE_OPTIONS}

export-samples/html/cv-monochrome-force.html

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106
min-width: 428px;
107107
display: flex;
108108
flex-direction: column;
109-
min-height: 100dvh;
109+
min-height: 100svh;
110110
position: relative;
111111
}
112112

@@ -116,6 +116,7 @@
116116
max-width: 1024px;
117117
margin-left: auto;
118118
margin-right: auto;
119+
width: 100%;
119120
}
120121
.title {
121122
font-size: var(--fs-xl);
@@ -364,30 +365,30 @@
364365
padding-left: var(--space-24);
365366
}
366367

367-
/* icono lenguajes */
368-
.lenguage__container {
368+
/* section languages */
369+
.language__container {
369370
display: grid;
370371
padding-inline: var(--space-8);
371372
grid-template-columns: minmax(100px, auto) minmax(114px, 1fr);
372373
align-items: center;
373374
justify-items: start;
374375
}
375-
.lenguage__container + .lenguage__container {
376+
.language__container + .language__container {
376377
padding-top: var(--space-12);
377378
}
378-
.lenguage__title {
379+
.language__title {
379380
color: var(--primary-500);
380381
font-weight: var(--fw-medium);
381382
}
382-
.lenguage__image {
383+
.language__image {
383384
min-width: 7rem;
384385
display: flex;
385386
flex-direction: column;
386387
align-items: flex-end;
387388
gap: var(--space-2);
388389
margin: 0px;
389390
}
390-
.lenguage__icon {
391+
.language__icon {
391392
width: 114px;
392393
height: 24px;
393394
clip-path: polygon(0px 100%, 100% 0px, 100% 100%);
@@ -482,7 +483,7 @@
482483
);
483484
}
484485

485-
/* experiencies */
486+
/* section experiencies */
486487
.experiencies__container {
487488
display: flex;
488489
flex-direction: column;
@@ -564,7 +565,7 @@
564565
}
565566
}
566567

567-
/* educations */
568+
/* section educations */
568569
.educations {
569570
padding-bottom: var(--space-8);
570571
}
@@ -671,6 +672,10 @@
671672
.column {
672673
display: none;
673674
}
675+
.main {
676+
flex-grow: 1;
677+
}
678+
674679
@media screen and (min-width: 834px) {
675680
.main {
676681
display: grid;
@@ -841,31 +846,31 @@ <h2 class="title">Competencias</h2>
841846
</section>
842847
<section class="section languages">
843848
<h2 class="title">Idiomas</h2>
844-
<div class="lenguage__container">
845-
<p class="lenguage__title">Español</p>
846-
<figure type="language" class="lenguage__image">
847-
<div class="lenguage__icon level-4"></div>
849+
<div class="language__container">
850+
<p class="language__title">Español</p>
851+
<figure type="language" class="language__image">
852+
<div class="language__icon level-4"></div>
848853
<figcaption class="language__caption">Nativo/Bilingüe</figcaption>
849854
</figure>
850855
</div>
851-
<div class="lenguage__container">
852-
<p class="lenguage__title">Inglés</p>
853-
<figure type="language" class="lenguage__image">
854-
<div class="lenguage__icon level-3"></div>
856+
<div class="language__container">
857+
<p class="language__title">Inglés</p>
858+
<figure type="language" class="language__image">
859+
<div class="language__icon level-3"></div>
855860
<figcaption class="language__caption">Fluido</figcaption>
856861
</figure>
857862
</div>
858-
<div class="lenguage__container">
859-
<p class="lenguage__title">Alemán</p>
860-
<figure type="language" class="lenguage__image">
861-
<div class="lenguage__icon level-2"></div>
863+
<div class="language__container">
864+
<p class="language__title">Alemán</p>
865+
<figure type="language" class="language__image">
866+
<div class="language__icon level-2"></div>
862867
<figcaption class="language__caption">Intermedio</figcaption>
863868
</figure>
864869
</div>
865-
<div class="lenguage__container">
866-
<p class="lenguage__title">Gallego</p>
867-
<figure type="language" class="lenguage__image">
868-
<div class="lenguage__icon level-1"></div>
870+
<div class="language__container">
871+
<p class="language__title">Gallego</p>
872+
<figure type="language" class="language__image">
873+
<div class="language__icon level-1"></div>
869874
<figcaption class="language__caption">Básico</figcaption>
870875
</figure>
871876
</div>
@@ -998,10 +1003,8 @@ <h2 class="title">Educación</h2>
9981003
</main>
9991004
<footer class="footer"></footer>
10001005
<script>
1001-
// Selecciona un elemento del DOM
10021006
const elementInDOM = selector => document.querySelector(selector);
10031007

1004-
// Selecciona un elemento del DOM y comprueba que exista
10051008
const elementReady = selector => {
10061009
const element = elementInDOM(selector);
10071010
if (element && element instanceof HTMLElement) {
@@ -1013,7 +1016,6 @@ <h2 class="title">Educación</h2>
10131016

10141017
// media query event handler (mobile)
10151018
function handleResize() {
1016-
// Selecciona los elementos y comprueba que existan
10171019
const main = elementInDOM('.main');
10181020
const aboutMe = elementInDOM('.about');
10191021
const experience = elementInDOM('.experiencies');
@@ -1025,20 +1027,21 @@ <h2 class="title">Educación</h2>
10251027
const avatar = elementInDOM('.header__avatar');
10261028
const background = elementInDOM('.background');
10271029
const footer = elementInDOM('.footer');
1028-
1029-
// Selecciona las columnas y comprueba que existan
10301030
const columnLeft = elementInDOM('.column-left');
10311031
const columnRight = elementInDOM('.column-right');
10321032

10331033
if (window.innerWidth > 834) {
1034-
// Mueve los elementos a las columnas correspondientes
1035-
columnLeft.appendChild(aboutMe);
1036-
columnLeft.appendChild(experience);
1037-
columnRight.appendChild(myLinks);
1038-
columnRight.appendChild(languages);
1039-
columnRight.appendChild(hardSkills);
1040-
columnRight.appendChild(softSkills);
1041-
columnRight.appendChild(education);
1034+
aboutMe && columnLeft.appendChild(aboutMe);
1035+
experience && columnLeft.appendChild(experience);
1036+
myLinks && columnRight.appendChild(myLinks);
1037+
languages && columnRight.appendChild(languages);
1038+
hardSkills && columnRight.appendChild(hardSkills);
1039+
softSkills && columnRight.appendChild(softSkills);
1040+
education && columnRight.appendChild(education);
1041+
1042+
if (columnLeft.children.length === 0) {
1043+
columnLeft.style.display = 'none';
1044+
}
10421045

10431046
if (avatar) {
10441047
background.classList.add('background--image');
@@ -1047,21 +1050,18 @@ <h2 class="title">Educación</h2>
10471050
background.classList.remove('background--image');
10481051
}
10491052
} else {
1050-
// Mueve los elementos al contenedor
1051-
main.appendChild(myLinks);
1052-
main.appendChild(aboutMe);
1053-
main.appendChild(languages);
1054-
main.appendChild(hardSkills);
1055-
main.appendChild(softSkills);
1056-
main.appendChild(experience);
1057-
main.appendChild(education);
1053+
myLinks && main.appendChild(myLinks);
1054+
aboutMe && main.appendChild(aboutMe);
1055+
hardSkills && main.appendChild(hardSkills);
1056+
softSkills && main.appendChild(softSkills);
1057+
languages && main.appendChild(languages);
1058+
experience && main.appendChild(experience);
1059+
education && main.appendChild(education);
10581060
}
10591061
}
10601062

1061-
// Se ejecuta cuando la página cambia de tamaño
10621063
window.addEventListener('resize', handleResize);
10631064

1064-
// Se ejecuta cuando la página está cargada
10651065
document.addEventListener('DOMContentLoaded', handleResize);
10661066
</script>
10671067
</body>

packages/manfred-common/src/doc-parts/experience-section/experience-section.helpers.spec.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -252,19 +252,19 @@ describe('experience-section.helpers specs', () => {
252252
competences: [
253253
{
254254
name: 'name',
255-
type: 'type',
255+
type: 'technology',
256256
},
257257
{
258258
name: 'name',
259-
type: 'type',
259+
type: 'technology',
260260
},
261261
{
262262
name: 'name',
263-
type: 'type',
263+
type: 'technology',
264264
},
265265
{
266266
name: 'name',
267-
type: 'name',
267+
type: 'technology',
268268
},
269269
],
270270
organization: {
@@ -365,19 +365,19 @@ describe('experience-section.helpers specs', () => {
365365
competences: [
366366
{
367367
name: 'name',
368-
type: 'type',
368+
type: 'technology',
369369
},
370370
{
371371
name: 'name',
372-
type: 'type',
372+
type: 'technology',
373373
},
374374
{
375375
name: 'name',
376-
type: 'type',
376+
type: 'technology',
377377
},
378378
{
379379
name: 'name',
380-
type: 'name',
380+
type: 'technology',
381381
},
382382
],
383383
organization: {

packages/manfred-common/src/doc-parts/experience-section/experience-section.mapper.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ describe('mapFromMacCvToExperienceSectionVm', () => {
5454
organization: {
5555
name: 'name',
5656
description: 'description',
57+
URL: 'https://lemoncode.net',
5758
},
5859
type: 'freelance',
5960
roles: [
@@ -89,6 +90,7 @@ describe('mapFromMacCvToExperienceSectionVm', () => {
8990
{
9091
name: 'name',
9192
description: 'description',
93+
url: 'https://lemoncode.net',
9294
type: 'Autónomo',
9395
roles: [
9496
{

packages/manfred-common/src/doc-parts/experience-section/experience-section.mapper.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const mapFromMacCvToExperienceSectionVm = (cv: ManfredAwesomicCV): Experi
1414
export const mapJobToExperience = (job: JobManfredAwesomicCV): ExperienceVm => ({
1515
name: job.organization?.name ?? '',
1616
description: job.organization?.description ?? '',
17+
url: job.organization?.URL ?? '',
1718
type: mapOrganizationType(job.type, types),
1819
roles: job.roles?.map(role => role),
1920
});

packages/manfred-common/src/doc-parts/experience-section/experience-section.vm.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { OrganizationType, PublicEntityDetails, Role } from '@/model';
1+
import { Competence, OrganizationType, PublicEntityDetails, Role } from '@/model';
22

33
export interface ExperienceVm {
44
name: string;
55
description?: string;
6+
url?: string;
67
type?: string;
78
roles: Role[];
89
}
@@ -18,4 +19,5 @@ export interface JobManfredAwesomicCV {
1819
organization: PublicEntityDetails;
1920
type?: OrganizationType | undefined;
2021
roles: [Role, ...Role[]];
22+
competences?: Competence[];
2123
}

0 commit comments

Comments
 (0)