Vuetify.jsを使って、マテリアルデザインに適応したコンポーネントを実装しましょう。
03-api-connection
で使用したプロジェクトに追加実装していきます。
- プロジェクトにVuetify.jsを導入します。
- 今回は
@nuxtjs/vuetify
パッケージを使用します。 package.json
のdependencies
に"@nuxtjs/vuetify": "0.4.3"
を追加してください。- 追加したら、
$ npm install
を実行してください。
/package.json
{
"name": "hello-nuxt",
"dependencies": {
"@nuxtjs/vuetify": "0.4.3",
"axios": "0.18.0",
"nuxt": "2.3.4"
},
"scripts": {
"start": "nuxt"
}
}
/nuxt.config.js
を作成し、以下の内容を書いて保存してください。vuetify.theme
にカラーテーマを設定することができます。- 便利なTheme generatorが利用できます。
/nuxt.config.js
module.exports = {
modules: ["@nuxtjs/vuetify"],
vuetify: {
theme: {
primary: "#009688",
secondary: "#80CBC4",
accent: "#1565C0",
error: "#f44336",
warning: "#ffeb3b",
info: "#2196f3",
success: "#4caf50"
}
}
};
これでVuetify.js
を使う準備が整いました。
- Vuetify.jsのサイトの
UI components
のメニューからコンポーネントを探して実装していきます。 - コンポーネントの詳細ページでデモやサンプルコード、APIを確認することができます。
- 基本的にはサンプルコードをベースに、APIを見ながらカスタマイズした上でプロジェクトに実装していきます。
- Pre-defined layoutsの
Default application markup
を参考にレイアウトを実装していきます。 - 全体を
v-app
タグでラップし、v-navigation-drawer
とv-toolbar
についてはmenu-list
で実装することとします。
/layouts/default.vue
<template>
<v-app>
<menu-list />
<v-content>
<v-container fluid>
<nuxt />
</v-container>
</v-content>
</v-app>
</template>
<script>
import MenuList from "~/components/MenuList";
export default {
components: { MenuList }
};
</script>
- ToolbarとNavigation drawerを導入します。
/components/MenuList.vue
を以下のように実装してください。data
でdrawerの表示と非表示のフラグを定義し、v-navigation-drawer
タグのv-model
に渡しています。v-toolbar-side-icon
タグの@click
でフラグを切り替えています。
/components/MenuList.vue
<template>
<div>
<v-navigation-drawer app v-model="drawer">
<v-list>
<v-list-tile @click="route('/')">
<v-list-tile-content>
<v-list-tile-title>HOME</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-tile @click="route('/items')">
<v-list-tile-content>
<v-list-tile-title>ITEMS</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
</v-list>
</v-navigation-drawer>
<v-toolbar app dark color="primary">
<v-toolbar-side-icon @click="drawer = !drawer"></v-toolbar-side-icon>
<v-toolbar-title>Item Management System</v-toolbar-title>
</v-toolbar>
</div>
</template>
<script>
export default {
data: function() {
return {
drawer: false
};
},
methods: {
route(url) {
this.$router.push(url)
}
}
};
</script>
- Vuetify.jsのサイトを参照しながら、ページを装飾していきましょう。
- サンプルコードでは以下のコンポーネントを使用しています。
- アイテム一覧:Data table
- アイテム新規作成:Form
- ボタン:Button