Selaa lähdekoodia

correction après relecture

Vincent 4 kuukautta sitten
vanhempi
commit
7ab17f1f4f

+ 1 - 2
components/Form/Freemium/Event.vue

@@ -171,8 +171,7 @@
       <template #dialogText>
         <v-card-text class="text">
           <p>
-            Si vous modifiez les informations de ce lieu et que ce lieu est lié à d'autre événements,
-            alors les changements seront répercutés dans tous vos événements liés.
+            {{$t('warning_edit_place')}}
           </p>
         </v-card-text>
       </template>

+ 10 - 1
components/Ui/Input/Autocomplete/ApiResources.vue

@@ -1,5 +1,13 @@
 <!--
-Champs autocomplete dédié à la recherche des Accesses d'une structure
+Champs autocomplete dédié à la recherche d'une Resource dans l'api
+Exemple : on souhaite lister les lieux d'une structure
+<UiInputAutocompleteApiResources
+          v-model="entity.place"
+          field="place"
+          :model="PlaceSearchItem"
+          listValue="id"
+          listLabel="name"
+        />
 
 @see https://vuetifyjs.com/en/components/autocompletes/#usage
 -->
@@ -41,6 +49,7 @@ import PageFilter from '~/services/data/Filters/PageFilter'
 import InArrayFilter from '~/services/data/Filters/InArrayFilter'
 import SearchFilter from '~/services/data/Filters/SearchFilter'
 import type ApiModel from "~/models/ApiModel";
+import PlaceSearchItem from "~/models/Custom/Search/PlaceSearchItem";
 
 const props = defineProps({
   /**

+ 20 - 1
components/Ui/Input/DateTimePicker.vue

@@ -6,6 +6,7 @@
         :label="$t('choose_day')"
         prepend-icon="fas fa-calendar"
         :rules="rules"
+        :variant="variant"
         :error="error || !!fieldViolations"
         :error-messages="
           errorMessage || (fieldViolations ? $t(fieldViolations) : '')
@@ -29,6 +30,7 @@
     <v-col cols="12" md="6">
       <v-text-field
         :model-value="time"
+        :variant="variant"
         :label="$t('choose_hour')"
         prepend-icon="fas fa-clock"
         :rules="rules"
@@ -122,7 +124,24 @@ const props = defineProps({
     type: String,
     required: false,
     default: null,
-  }
+  },
+  /**
+   * @see https://vuetifyjs.com/en/api/v-autocomplete/#props-variant
+   */
+  variant: {
+    type: String as PropType<
+      | 'filled'
+      | 'outlined'
+      | 'plain'
+      | 'underlined'
+      | 'solo'
+      | 'solo-inverted'
+      | 'solo-filled'
+      | undefined
+    >,
+    required: false,
+    default: 'outlined',
+  },
 })
 
 const showMenuTime = ref(false)

+ 18 - 0
components/Ui/Input/Phone.vue

@@ -9,6 +9,7 @@ Champs de saisie d'un numéro de téléphone
   <v-phone-input
     :model-value.number="modelValue"
     :rules="rules"
+    :variant="variant"
     :label="label || field ? $t(label ?? field) : undefined"
     defaultCountry="FR"
     @update:model-value="onUpdate($event)"
@@ -53,6 +54,23 @@ const props = defineProps({
     required: false,
     default: () => [],
   },
+  /**
+   * @see https://vuetifyjs.com/en/api/v-autocomplete/#props-variant
+   */
+  variant: {
+    type: String as PropType<
+      | 'filled'
+      | 'outlined'
+      | 'plain'
+      | 'underlined'
+      | 'solo'
+      | 'solo-inverted'
+      | 'solo-filled'
+      | undefined
+    >,
+    required: false,
+    default: 'outlined',
+  },
 })
 
 const emit = defineEmits(['update:modelValue'])

+ 18 - 1
components/Ui/Input/TextArea.vue

@@ -6,7 +6,6 @@ Champs de saisie de bloc texte
 
 <template>
   <v-textarea
-    outlined
     :model-value="modelValue"
     :label="label || field ? $t(label ?? field) : undefined"
     :rules="rules"
@@ -15,6 +14,7 @@ Champs de saisie de bloc texte
     :error-messages="
       errorMessage || (fieldViolations ? $t(fieldViolations) : '')
     "
+    :variant="variant"
     @update:model-value="onUpdate($event)"
     @change="onChange($event)"
   />
@@ -87,6 +87,23 @@ const props = defineProps({
     required: false,
     default: null,
   },
+  /**
+   * @see https://vuetifyjs.com/en/api/v-autocomplete/#props-variant
+   */
+  variant: {
+    type: String as PropType<
+      | 'filled'
+      | 'outlined'
+      | 'plain'
+      | 'underlined'
+      | 'solo'
+      | 'solo-inverted'
+      | 'solo-filled'
+      | undefined
+    >,
+    required: false,
+    default: 'outlined',
+  },
 })
 
 const { fieldViolations, updateViolationState } = useFieldViolation(props.field)

+ 19 - 0
components/Ui/Input/TreeSelect.vue

@@ -20,6 +20,7 @@ et sélectionner des éléments organisés en catégories et sous-catégories.
     :items="flattenedItems"
     item-title="label"
     item-value="value"
+    :variant="variant"
     multiple
     :menu-props="{ maxHeight: 400 }"
     @update:menu="onMenuUpdate"
@@ -151,6 +152,7 @@ et sélectionner des éléments organisés en catégories et sous-catégories.
 <script setup lang="ts">
 import StringUtils from '~/services/utils/stringUtils'
 import _ from 'lodash'
+import type {PropType} from "vue";
 
 interface SelectItem {
   id: string
@@ -185,6 +187,23 @@ const props = defineProps({
     required: false,
     default: null,
   },
+  /**
+   * @see https://vuetifyjs.com/en/api/v-autocomplete/#props-variant
+   */
+  variant: {
+    type: String as PropType<
+      | 'filled'
+      | 'outlined'
+      | 'plain'
+      | 'underlined'
+      | 'solo'
+      | 'solo-inverted'
+      | 'solo-filled'
+      | undefined
+    >,
+    required: false,
+    default: 'outlined',
+  }
 })
 
 const searchInput = ref()

+ 3 - 3
components/Ui/MapLeaflet.client.vue

@@ -103,18 +103,18 @@ const props = defineProps({
   },
 })
 
-const FRANCE_LATTITUDE = 46.603354
+const FRANCE_LATITUDE = 46.603354
 const FRANCE_LONGITUDE = 1.888334
 const {apiRequestService, pending} = useAp2iRequestService()
 const { em } = useEntityManager()
 
 const position:ComputedRef<PointTuple> = computed(()=>{
-  return [props.latitude || FRANCE_LATTITUDE, props.longitude || FRANCE_LONGITUDE]
+  return [props.latitude || FRANCE_LATITUDE, props.longitude || FRANCE_LONGITUDE]
 })
 
 const zoom = computed({
   get() {
-    return props.latitude && props.latitude != FRANCE_LATTITUDE ? 12 : 5
+    return props.latitude && props.latitude != FRANCE_LATITUDE ? 12 : 5
   },
   set(newValue: string) {
     zoom.value = newValue

+ 0 - 76
composables/useVuetifyValidation.ts

@@ -1,76 +0,0 @@
-// composables/useVuetifyValidation.ts
-import { computed, ref, inject, onMounted, onUnmounted } from 'vue'
-
-export function useVuetifyValidation(
-  value: Ref<any>,
-  rules: Ref<Array<(value: any) => boolean | string>>
-) {
-  const hasBeenTouched = ref(false)
-  const forceValidation = ref(false)
-  const form = inject<any>('form', null)
-
-  const errorMessages = computed(() => {
-    if (!rules.value.length) return []
-
-    const errors: string[] = []
-    for (const rule of rules.value) {
-      const result = rule(value.value)
-      if (result !== true) {
-        errors.push(typeof result === 'string' ? result : 'Erreur de validation')
-      }
-    }
-    return errors
-  })
-
-  const hasError = computed(() => {
-    if (!hasBeenTouched.value && !forceValidation.value) return false
-    return errorMessages.value.length > 0
-  })
-
-  const isValid = computed(() => errorMessages.value.length === 0)
-
-  const validationState = {
-    id: Math.random().toString(36).substr(2, 9),
-    isValid,
-    errorMessages,
-    validate: () => {
-      forceValidation.value = true
-      return isValid.value
-    },
-    reset: () => {
-      hasBeenTouched.value = false
-      forceValidation.value = false
-    },
-    resetValidation: () => {
-      forceValidation.value = false
-    }
-  }
-
-  const touch = () => {
-    hasBeenTouched.value = true
-  }
-
-  const validate = () => {
-    forceValidation.value = true
-  }
-
-  onMounted(() => {
-    if (form?.register) {
-      form.register(validationState)
-    }
-  })
-
-  onUnmounted(() => {
-    if (form?.unregister) {
-      form.unregister(validationState.id)
-    }
-  })
-
-  return {
-    hasError,
-    errorMessages,
-    isValid,
-    touch,
-    validate
-  }
-}

+ 2 - 1
i18n/lang/fr/general.json

@@ -1,4 +1,5 @@
 {
+  "warning_edit_place": "Si vous modifiez les informations de ce lieu et que ce lieu est lié à d'autre événements,alors les changements seront répercutés dans tous vos événements liés.",
   "agenda_def": "Pour la promotion de votre structure et de vos événements",
   "manager_def": "Pour les fédérations, confédérations et institutions publiques",
   "school_def": "Pour tous les établissements d’enseignement artistique",
@@ -45,7 +46,7 @@
   "coordinate": "Coordonnées",
   "general_informations": "Informations générales",
   "freemium_organization_page": "Fiche de ma structure",
-  "freemium_profile_page": "Mon profile",
+  "freemium_profile_page": "Mon profil",
   "freemium_dashboard_page": "Bienvenue sur votre compte Opentalent",
   "freemium_page": "Freemium",
   "showing": "Affichage",

+ 1 - 1
services/asserts/TypeAssert.ts

@@ -18,7 +18,7 @@ export class TypeAssert implements AssertRule {
 
     if (criteria === 'integer') {
       return (value: any) =>
-        parseInt(value) > 0 || t('need_to_be_integer');
+        Number.isInteger(value) || t('need_to_be_integer');
     }
 
     return () => true;