67 votes

Utilisation de thèmes personnalisés dans Vuetify et passage de variables de couleur aux composants

Dans mon index.js J'ai remplacé manuellement le fichier Vuetify theme avec la couleur de mon entreprise :

Vue.use(Vuetify, {
  theme: {
    primary: '#377ef9',
    secondary: '#1b3e70',
    accent: '#ff643d',
    error: '#ff643d'
    ...
  }

Maintenant, je peux utiliser ces couleurs à partir de mes modèles comme suit :

<my-text-field name="input text"
    label="text"
    value="text text text text..."
    type="text"
    color="primary">
</my-text-field>

Ce que je cherche, c'est à utiliser le primary ou toute autre variable dans le theme défini ci-dessus, dans le style de mon modèle :

<script>
  import { VTextField } from 'vuetify'
  export default {
    extends: VTextField
  }
</script>

<style scoped lang="stylus">
  label
    color: <seconday color> <-- this is what I'm after
    color: #1b3e70 <-- this works, but not quite good enough for me
</style>

Je peux facilement écrire la valeur hexadécimale de mes couleurs dans la section style, mais je ne veux pas me répéter, et préfère utiliser mon theme Ainsi, il me sera plus facile de changer facilement les couleurs partout, et d'éviter les fautes de frappe qui entraîneraient des erreurs dans la définition des couleurs.

0 votes

Je ne suis pas sûr, mais je crois que vous devez les définir dans la section .styl (c'est-à-dire main.styl ) également. Ou, par exemple, dans custom_colors.styl que vous importez ensuite dans les composants <style scoped lang="stylus">

2 votes

@Traxo Je ne veux pas définir mes styles deux fois. La maintenance va devenir difficile. Je cherche une solution parfaite qui me permette de définir mes éléments à un seul endroit, et de les utiliser dans tout le système...

0 votes

Je comprends, c'est pourquoi j'ai mis un commentaire parce que je ne suis pas sûr à 100% qu'il y ait une solution vuetify à ce problème. Je pense que la seule façon vuetify de le faire est de copier ces valeurs dans le fichier .styl

2voto

Exemple de changement de thème ( lien utile ):

    <v-app :dark="setTheme" 
           :style="{background: $vuetify.theme.themes[theme].background}" 
           >

JS :

      computed: {
            setTheme() {
                this.$vuetify.theme.dark = this.goDark;
            }
      },
      data() {
            return { 
                goDark: false
            }
      }

0 votes

Il manque une déclaration de retour de la valeur calculée de setTheme ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X