Ver Fonte

various fixes

Olivier Massot há 1 ano atrás
pai
commit
fe4426bee5

+ 8 - 1
components/Common/Banner.vue

@@ -6,7 +6,7 @@
           <img
             :src="imageSrc"
             :alt="imageAlt"
-            class="cover-image"
+            :class="['cover-image', reverseImage ? 'reverse' : '']"
           />
 
           <div v-if="logoSrc" class="details-square">
@@ -65,6 +65,10 @@ const props = defineProps({
   logoAltTheme: {
     type: Boolean,
     default: false
+  },
+  reverseImage: {
+    type: Boolean,
+    default: false
   }
 });
 </script>
@@ -95,6 +99,9 @@ const props = defineProps({
   object-position: center var(--banner-center-image);
   transition: transform 0.2s;
   margin: 0 auto;
+}
+
+.reverse {
   transform: scaleX(-1);
 }
 

+ 3 - 6
components/Common/ReviewSection.vue

@@ -138,8 +138,7 @@ const goNext = () => {
 
   .v-card-text {
     text-align: justify;
-    min-height: 200px;
-    max-height: 200px;
+    min-height: 120px;
     overflow: auto;
     font-size: 0.9rem;
   }
@@ -150,7 +149,6 @@ const goNext = () => {
     flex-direction: column;
     justify-content: center;
     align-items: center;
-    margin-top: 1rem;
   }
 
   .v-card-actions {
@@ -158,7 +156,6 @@ const goNext = () => {
     font-size: 20px;
     line-height: 24px;
     color: var(--on-primary-color-alt) !important;
-    margin-top: 5rem;
     text-align: justify !important;
   }
 
@@ -198,8 +195,8 @@ const goNext = () => {
 .v-card {
   padding: 0 0.5rem;
   border-radius: 1rem;
-  min-height: 450px;
-  max-height: 450px;
+  min-height: 220px;
+  max-height: 250px;
   margin-top: 2rem;
   margin-bottom: 0.6rem;
 }

+ 4 - 4
components/Home/Solution.vue

@@ -272,7 +272,7 @@ h3 {
   }
 
   .artist-image {
-    background: url(/images/solutions/artist.jpg);
+    background-image: url(/images/solutions/artist.jpg);
   }
 
   .artist-image:hover::before {
@@ -280,8 +280,8 @@ h3 {
     cursor: pointer;
   }
 
-  .school-image{
-    background: url(/images/solutions/school.jpg);
+  .school-image {
+    background-image: url(/images/solutions/school.jpg);
   }
 
   .school-image:hover::before {
@@ -290,7 +290,7 @@ h3 {
   }
 
   .manager-image {
-    background: url(/images/solutions/manager.png);
+    background-image: url(/images/solutions/manager.png);
   }
 
   .manager-image:hover::before {

+ 9 - 0
components/JoinUs/Form.vue

@@ -51,6 +51,7 @@
           <v-file-input
             id="jobApplicationResume"
             v-model="resumeUpload"
+            :rules="[validateResume]"
             label="Dépôt de CV*"
             accept=".pdf, .jpeg, .png"
             required
@@ -71,6 +72,11 @@
             required
           />
           <span class="remaining-cars-notice">{{ leftCars }} caractères restants</span>
+
+          <div class="d-flex flex-column align-center mt-4">
+            <!-- @see https://github.com/hCaptcha/vue-hcaptcha -->
+            <LayoutCaptcha/>
+          </div>
         </v-form>
       </v-card-text>
 
@@ -128,6 +134,9 @@ const validateEmail = (email: string | null) =>
 const validatePhone = (email: string | null) =>
   (!!email && /^((\+|00)33\s?|0)[1-7]([\s.]?\d{2}){4}$/.test(email)) || "Le numéro de téléphone doit être valide";
 
+const validateResume = (surname: string | null) =>
+  resumeUpload.value !== null && resumeUpload.value[0] !== null || "Vous devez joindre un CV à l'un des formats indiqués";
+
 const validateNonEmptyMessage = (message: string | null) =>
   (!!message && message.length > 0) ||
   "Le message ne peut pas être vide";

+ 4 - 1
components/JoinUs/Missions.vue

@@ -251,6 +251,10 @@ const onFormSubmit = () => {
 }
 
 .v-dialog {
+  :deep(.v-overlay__content) {
+    overflow: auto !important;
+  }
+
   :deep(.v-card) {
     border-bottom-left-radius: 0;
     border-bottom-right-radius: 0;
@@ -261,6 +265,5 @@ const onFormSubmit = () => {
     border-top-left-radius: 0;
     border-top-right-radius: 0;
   }
-
 }
 </style>

+ 2 - 1
components/Layout/Captcha.vue

@@ -1,6 +1,6 @@
 <template>
   <vue-hcaptcha
-    :sitekey="runtimeConfig.hCaptchaSiteKey"
+    :sitekey="siteKey"
     @verify="onVerify"
     @expired="onExpire"
     @challenge-expired="onChallengeExpire"
@@ -17,6 +17,7 @@
 import VueHcaptcha from "@hcaptcha/vue3-hcaptcha";
 
 const runtimeConfig = useRuntimeConfig()
+const siteKey = runtimeConfig.public.hCaptchaSiteKey
 
 const verified: Ref<boolean> = ref(false);
 const expired: Ref<boolean> = ref(false);

+ 10 - 10
components/Layout/Footer/Footer.vue

@@ -85,19 +85,19 @@
           </v-col>
 
           <!-- Cinquième section : liens réseaux sociaux (écrans larges seulement) -->
-          <v-col v-if="mdAndUp" cols="3">
-            <v-row>
+          <v-col v-if="mdAndUp" cols="2">
+            <v-row class="justify-center">
               <h5>
                 Suivez-nous
               </h5>
             </v-row>
 
-            <v-row class="social-networks">
+            <v-row class="justify-center social-networks">
               <v-col cols="2">
                 <nuxt-link
                   href="https://www.facebook.com/opentalent"
                   target="_blank"
-                  class="fab fa-facebook"
+                  class="fab fa-square-facebook"
                 />
               </v-col>
               <v-col cols="2">
@@ -119,7 +119,7 @@
                 <nuxt-link
                   href="https://www.youtube.com/@Opentalent74300"
                   target="_blank"
-                  class="fab fa-youtube"
+                  class="fab fa-square-youtube"
                 />
               </v-col>
             </v-row>
@@ -136,12 +136,12 @@
             <nuxt-link
               href="https://www.facebook.com/opentalent"
               target="_blank"
-              class="fab fa-facebook"
+              class="fab fa-square-facebook"
             />
             <nuxt-link
               href="https://twitter.com/Opentalent_FRA"
               target="_blank"
-              class="fa-brands fa-square-twitter"
+              class="fa-brands fa-square-x-twitter"
             />
             <nuxt-link
               href="https://www.linkedin.com/company/2iopenservice"
@@ -151,7 +151,7 @@
             <nuxt-link
               href="https://www.youtube.com/@Opentalent74300"
               target="_blank"
-              class="fab fa-youtube"
+              class="fab fa-square-youtube"
             />
           </v-col>
         </v-row>
@@ -318,7 +318,8 @@ const onIntersect = (isIntersecting) => {
 
 .logo .v-img {
   margin-bottom: 3rem;
-  width: 25rem;
+  width: 300px;
+  height: 100px;
 }
 
 .v-col {
@@ -357,7 +358,6 @@ a {
 }
 
 .footnotes {
-  margin-top: 2rem;
   border-top: 0.4px solid var(--neutral-color-alt-strong);
   box-shadow: 0 3px 24px rgba(0, 0, 0, 0.07);
 

+ 5 - 4
components/Layout/Navigation.vue

@@ -9,14 +9,14 @@ Menu Navigation
 
     <v-row class="navigation-lg" style="margin-top: 0 !important;">
       <!-- Logo Opentalent -->
-      <v-col cols="3">
+      <v-col cols="2">
         <nuxt-link to="/">
           <v-img class="logo" src="/images/logo/navigation-logo.png" />
         </nuxt-link>
       </v-col>
 
       <!-- Menu principal -->
-      <v-col cols="9">
+      <v-col cols="10" class="pl-6">
         <v-menu
           v-for="item in menu"
           :key="item.label"
@@ -206,7 +206,8 @@ const withAnimation = (callback: () => void) => {
 <style scoped>
 
 .logo {
-  height: 8rem;
+  height: 100px;
+  width: 300px;
 }
 
 .logo-md {
@@ -241,7 +242,7 @@ const withAnimation = (callback: () => void) => {
   }
 
   .menuItem.first-level {
-    font-size: 1rem;
+    font-size: 1.3rem;
     margin-right: 1rem;
     font-weight: 700;
     letter-spacing: 0.05em;

+ 7 - 3
components/News/List.vue

@@ -12,6 +12,12 @@
     </v-row>
   </div>
 
+  <div v-else-if="!newsCollection || !(newsCollection!.items)">
+    <v-row class="justify-center">
+      Aucun résultat trouvé
+    </v-row>
+  </div>
+
   <div v-else>
     <v-row
       v-for="(newsItem, index) in newsCollection!.items"
@@ -82,7 +88,7 @@
       </v-card>
     </v-row>
 
-    <v-row>
+    <v-row v-if="newsCollection!.items">
       <v-col cols="12">
         <LayoutPagination
           v-if="newsCollection && newsCollection.pagination"
@@ -97,8 +103,6 @@
 </template>
 
 <script setup lang="ts">
-
-import { ComputedRef } from "vue";
 import { useEntityFetch } from "~/composables/data/useEntityFetch";
 import News from "~/models/Maestro/News";
 

+ 1 - 1
models/Maestro/ContactRequest.ts

@@ -7,7 +7,7 @@ import {Uid, Str, Bool, Attr} from "pinia-orm/dist/decorators";
  * @see https://gitlab.2iopenservice.com/opentalent/maestro/-/blob/master/src/ApiResource/ContactRequest.php?ref_type=heads
  */
 export default class ContactRequest extends ApiModel {
-  static entity = 'contact-request'
+  static entity = 'contact_request'
 
   @Uid()
   declare id: number

+ 1 - 1
models/Maestro/JobApplication.ts

@@ -7,7 +7,7 @@ import {Uid, Str, Bool, Attr} from "pinia-orm/dist/decorators";
  * @see https://gitlab.2iopenservice.com/opentalent/maestro/-/blob/master/src/ApiResources/JobApplication.php?ref_type=heads
  */
 export default class JobApplication extends ApiModel {
-  static entity = 'job-application'
+  static entity = 'job_application'
 
   @Uid()
   declare id: number

+ 1 - 1
models/Maestro/JobPosting.ts

@@ -7,7 +7,7 @@ import {Uid, Str, Bool, Attr} from "pinia-orm/dist/decorators";
  * @see https://gitlab.2iopenservice.com/opentalent/maestro/-/blob/master/src/Entity/JobPosting/JobPosting.php?ref_type=heads
  */
 export default class JobPosting extends ApiModel {
-  static entity = 'job-postings'
+  static entity = 'job_postings'
 
   @Uid()
   declare id: number

+ 1 - 0
pages/opentalent_artist.vue

@@ -13,6 +13,7 @@
       image-alt="banner artist"
       square-text="Orchestres, chorales, compagnies de danse, de cirque et de théâtre"
       logo-src="/images/logo/logiciels/Artist-noir.png"
+      :logo-alt-theme="true"
     />
 
     <CommonMenuScroll :menus="menus" class="mb-6" />

+ 2 - 4
pages/opentalent_manager.vue

@@ -17,10 +17,8 @@
       imageAlt="line"
       squareText="Fédérations, confédérations et collectivités"
       logoSrc="/images/logo/logiciels/Manager-noir.png"
-      squareColor="#d8050b"
-      blueSquareColor="#FFF"
-      textColor="#FFF"
-    /> <!-- TODO: theming -->
+      :logo-alt-theme="true"
+    />
 
     <CommonMenuScroll :menus="menus" class="mb-6" />
 

+ 6 - 1
services/utils/FileUtils.ts

@@ -21,7 +21,12 @@ class FileUtils {
     return new Promise((resolve, _) => {
       const reader = new FileReader();
       // @ts-ignore
-      reader.onloadend = () => resolve(reader.result);
+      reader.onloadend = () => {
+        // @ts-ignore
+        let base64Data: string = reader.result;
+        base64Data = base64Data.substring(base64Data.indexOf(',') + 1);
+        resolve(base64Data);
+      };
       reader.readAsDataURL(blob);
     });
   }