Skip to content
Snippets Groups Projects
KeyboardManager.vue 1.78 KiB
Newer Older
Valentin Rigal's avatar
Valentin Rigal committed
<template>
  <div>
    <div v-if="editedKeyboard">
      <a title="Back to keyboards" href="#" v-on:click="editedKeyboard = null">

      </a>
      <span>{{ editedKeyboard.name }}</span>
      <KeyboardConfiguration :keyboard="editedKeyboard" />
    </div>
    <div v-else-if="selectedKeyboard">
      <a
        title="Back to keyboards"
        href="#"
        v-on:click="selectedKeyboard = null"

      </a>
      <span>{{ selectedKeyboard.name }}</span>
      <KeyboardDisplay :keyboard="selectedKeyboard" />
Valentin Rigal's avatar
Valentin Rigal committed
    </div>
    <div v-else>
      <strong>Keyboards manager</strong>
      <hr />
      <table class="keyboards">
        <thead>
          <tr>
            <th>Keyboard</th>
            <th>No. of keys</th>
            <th>Actions</th>
          </tr>
        </thead>
        <tbody>
          <tr v-for="k in keyboards" :key="k.name">
            <td>
              <a href="#" v-on:click="selectedKeyboard = k">{{ k.name }}</a>
            </td>
            <td>{{ k.characters.length }}</td>
            <td>
              <button type="button" v-on:click="editedKeyboard = k">
                Edit
              </button>
            </td>
          </tr>
        </tbody>
      </table>
Valentin Rigal's avatar
Valentin Rigal committed
    </div>
  </div>
</template>

<script>
Valentin Rigal's avatar
Valentin Rigal committed
import KeyboardConfiguration from "./KeyboardConfiguration.vue";
import KeyboardDisplay from "./KeyboardDisplay.vue";

Valentin Rigal's avatar
Valentin Rigal committed
export default {
  components: {
    KeyboardConfiguration,
    KeyboardDisplay,
Valentin Rigal's avatar
Valentin Rigal committed
  },
  data: () => ({
    selectedKeyboard: null,
    editedKeyboard: null,
Valentin Rigal's avatar
Valentin Rigal committed
  }),
  computed: {
    ...mapState(["keyboards"]),
  },
Valentin Rigal's avatar
Valentin Rigal committed
};
</script>

<style scoped>
table.keyboards,
table.keyboards th,
table.keyboards td {
  padding: 5px;
  border: 1px solid black;
  border-collapse: collapse;
}
</style>