From 27364e2b96812975ec34715432568419e1618968 Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Fri, 12 Jul 2024 00:36:51 +0200
Subject: [PATCH] Add chip-like subject select field

---
 .../components/SubjectChipSelectField.vue     | 45 +++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100644 aleksis/apps/cursus/frontend/components/SubjectChipSelectField.vue

diff --git a/aleksis/apps/cursus/frontend/components/SubjectChipSelectField.vue b/aleksis/apps/cursus/frontend/components/SubjectChipSelectField.vue
new file mode 100644
index 0000000..46012a0
--- /dev/null
+++ b/aleksis/apps/cursus/frontend/components/SubjectChipSelectField.vue
@@ -0,0 +1,45 @@
+<script setup>
+import ForeignKeyChipSelectField from "aleksis.core/components/generic/forms/ForeignKeyChipSelectField.vue";
+// eslint-disable-next-line no-unused-vars
+import CreateSubject from "./CreateSubject.vue";
+import SubjectChip from "./SubjectChip.vue";
+</script>
+
+<template>
+  <foreign-key-chip-select-field
+    v-bind="$attrs"
+    v-on="$listeners"
+    :fields="headers"
+    create-item-i18n-key="cursus.subject.create"
+    :gql-query="gqlQuery"
+    :gql-create-mutation="gqlCreateMutation"
+    :gql-patch-mutation="{}"
+    :default-item="defaultItem"
+    :get-create-data="getCreateData"
+    :get-patch-data="getPatchData"
+    :background-color="$attrs['value'].colourBg"
+    :color="$attrs['value'].colourFg"
+    return-object
+  >
+    <template #item="{ item }">
+      <subject-chip :subject="item" :style="{ cursor: 'pointer' }" />
+    </template>
+    <template #selection="{ item }">
+      <span :style="{ color: item.colourFg }">{{ item.name }}</span>
+    </template>
+    <template #createComponent="{ attrs, on, createMode }">
+      <create-subject v-bind="attrs" v-on="on" />
+    </template>
+  </foreign-key-chip-select-field>
+</template>
+
+<script>
+import SubjectField from "./SubjectField.vue";
+
+export default {
+  name: "SubjectChipSelectField",
+  extends: SubjectField,
+};
+</script>
+
+<style scoped></style>
-- 
GitLab