Tutorial Quasar #4 : Membuat Halaman Todo


Tutorial Quasar #4 : Membuat Halaman Todo

Pada Kesempatan ini kita kita akan membuat halaman Todo dan halaman help

Langkah 1 - Ubah nama file IndexPage.vue Menjadi Todo.vue

Buka folder src/pages dan rubah nama file IndexPage.vue Menjadi Todo.vue. Kemudian rubah routes.js di dalam folder src/router menjadi seperti ini:

const routes = [
  {
    path: "/",
    component: () => import("layouts/MainLayout.vue"),
    children: [
      { path: "", component: () => import("pages/Todo.vue"), props: "" },
      { path: "/help", component: () => import("pages/Help.vue") },
    ],
  },

  // Always leave this as last one,
  // but you can also remove it
  {
    path: "/:catchAll(.*)*",
    component: () => import("pages/ErrorNotFound.vue"),
  },
];

export default routes;

Langkah 2 - Membuat Halaman Help

Buat file bernama Help.vue pada folder src/pages rubah file tersebut menjadi seperti ini:

<template>
  <q-page class="q-pa-lg">
    <h5 class="q-mt-none">Help</h5>
    <p>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusantium culpa
      tempora, distinctio eius, voluptatibus similique sed aliquid ex reiciendis
      mollitia, deserunt natus praesentium maxime? Ipsam ut ducimus temporibus
      consectetur consequatur.
    </p>
    <p>
      Lorem ipsum dolor sit amet consectetur dd adipisicing elit. Facere maxime
      voluptatum maiores saepe id, at velit quibusdam accusantium aperiam
      suscipit odit et cum porro eligendi minima nobis ab dolor aut.
    </p>
  </q-page>
</template>
<script setup>
import { defineComponent } from "vue";

defineComponent({
  name: "HelpPage",
});
</script>

Apabila muncul error ketika menuju halaman help Silahkan hentikan terminal aplikasi lalu jalankan lagi perintah quasar dev untuk membuild ulang halaman yang baru saja di tambahkan

Tampilan halaman help akan seperti berikut:

Tampilan halaman Todo masih tetap sama karena kita belum merubah Tampilan tersebut.

Langkah 3 - Merubah Halaman Todo

Buka File Todo.vue pada folder src/pages dan rubah isinya menjadi seperti ini:

<template>
  <q-page class="bg-grey-4 column">
    <div class="row q-pa-sm bg-primary">
      <q-input
        v-model="newTask"
        @keyup.enter="addTask"
        class="col"
        filled
        bg-color="white"
        placeholder="Add Task"
        dense
      >
        <template v-slot:append>
          <q-btn @click="addTask" round dense flat icon="add" />
        </template>
      </q-input>
    </div>
    <q-list class="bg-white" separator bordered>
      <q-item
        v-for="(task, index) in tasks"
        :key="index"
        @click="task.done = !task.done"
        :class="{ 'done bg-blue-1': task.done }"
        clickable
        v-ripple
      >
        <q-item-section avatar>
          <q-checkbox
            v-model="task.done"
            class="no-pointer-events"
            color="primary"
          />
        </q-item-section>
        <q-item-section>
          <q-item-label>{{ task.title }}</q-item-label>
        </q-item-section>
        <q-item-section v-if="task.done" side>
          <q-btn
            @click.stop="deleteTask(index)"
            flat
            round
            dense
            color="primary"
            icon="delete"
          />
        </q-item-section>
      </q-item>
    </q-list>
    <div v-if="!tasks.length" class="no-tasks absolute-center">
      <q-icon name="check" size="100px" color="primary"></q-icon>
      <div class="text-h5 text-primary text-center">No Tasks</div>
    </div>
  </q-page>
</template>
<script setup>
import { defineComponent } from "vue";
import { ref } from "vue";
import { useQuasar } from "quasar";

const $q = useQuasar();
const newTask = ref("");
const tasks = ref([]);

defineComponent({
  name: "TodoPage",
});
function deleteTask(index) {
  $q.dialog({
    title: "Confirm",
    message: "Realy delete?",
    cancel: true,
    persistent: true,
  }).onOk(() => {
    tasks.value.splice(index, 1);
    $q.notify({
      message: "Task Delete",
      color: "purple",
    });
  });
}
function addTask() {
  tasks.value.push({
    title: newTask.value,
    done: false,
  });
  newTask.value = "";
}
</script>

Pada code di atas kita mendefinisikan beberapa variable dan menambahkan beberapa fungsi.

variable $q Digunakan untuk menamapung fungsi useQuasar yang nantinya akan digunakan untuk menampilkan dialog dan notifikasi.

variable $newTask Digunakan untuk menamapung fungsi ref("") yang nantinya akan digunakan untuk menamapung task baru dari tag input.

variable $tasks Digunakan untuk menamapung fungsi ref([]) yang nantinya akan digunakan untuk menamapung semua data task.

fungsi $deleteTask Digunakan untuk menghapus task dan menampilkan dialog terlebih dahulu sebelum menghapus task. Kemudian akan menampilkan notifikasi setelah berhasil menghapus.

fungsi $addTask Digunakan untuk menambahkan task baru ke dalam variable $tasks

Tampilan halaman Todo akan seperti berikut:

Sampai tahap ini kita bisa menambahkan task baru tampa masalah. Tetapi kita belum bisa menghapus task karena kita perlu mengatur configurasi untuk dapat menampilkan modal dialog dan notifikasinya.

Langkah 4 - Konfigurasi quasar.config.js

Tambahkan "dialog", dan "Notify" pada Quasar plugins

framework: {
      ....
      // Quasar plugins
      plugins: ["Dialog", "Notify"],
    },

Berikut Tampilan doalog ketika akan menghapus task

Berikut Tampilan notifikasi ketika task berhasil di hapus

Langkah 5 - Menambahkan Style CSS

Seperi yang anda liat pada tampilan todo ketika task yang telah di checklist tampak kurang menarik. Kita akan menambahkan style css berikut pada file app.sccs yang terletak pada folder src/css

// app global css in SCSS form
.done {
  .q-item__label {
    text-decoration: line-through;
    color: #bbb;
  }
}
.no-tasks {
  opacity: 0.5;
}

Tampilannya akan berubah menjadi seperti ini:

Sampai disini pembahasan bagaimana cara membuat halaman baru dan menerapkan beberapa variable, fungsi, style pada Quasar 2. Jika teman-teman ada kendala atau problem saat mengikuti tutorialnya, maka bisa bertanya di kolom komentar atau di group telegram SantriKoding.


Riki Krismawan
Orang yang suka meraba komputer dan menghisap oxygen

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami