diff --git a/frontend/components/Form/Multiselect.vue b/frontend/components/Form/Multiselect.vue index 0680394f..baba4bd2 100644 --- a/frontend/components/Form/Multiselect.vue +++ b/frontend/components/Form/Multiselect.vue @@ -5,8 +5,8 @@ @@ -60,14 +63,6 @@ type: Array as () => any[], required: true, }, - name: { - type: String, - default: "name", - }, - uniqueField: { - type: String, - default: "id", - }, selectFirst: { type: Boolean, default: false, @@ -84,7 +79,7 @@ } return props.items.filter(item => { - return item[props.name].toLowerCase().includes(search.value.toLowerCase()); + return item.name.toLowerCase().includes(search.value.toLowerCase()); }); }); @@ -93,15 +88,33 @@ } const selected = computed(() => { - return value.value.map(itm => itm[props.uniqueField]); + return value.value.map(itm => itm.id); }); function toggle(uniqueField: string) { - const item = props.items.find(itm => itm[props.uniqueField] === uniqueField); - if (selected.value.includes(item[props.uniqueField])) { - value.value = value.value.filter(itm => itm[props.uniqueField] !== item[props.uniqueField]); + const item = props.items.find(itm => itm.id === uniqueField); + if (selected.value.includes(item.id)) { + value.value = value.value.filter(itm => itm.id !== item.id); } else { value.value = [...value.value, item]; } } + + const api = useUserApi(); + const toast = useNotifier(); + + async function createAndAdd(name: string) { + const { error, data } = await api.labels.create({ + name, + color: "", // Future! + description: "", + }); + + if (error) { + console.error(error); + toast.error(`Failed to create label: ${name}`); + } else { + value.value = [...value.value, data]; + } + } diff --git a/frontend/composables/use-server-events.ts b/frontend/composables/use-server-events.ts index 53f06316..236920d2 100644 --- a/frontend/composables/use-server-events.ts +++ b/frontend/composables/use-server-events.ts @@ -18,7 +18,11 @@ function connect(onmessage: (m: EventMessage) => void) { protocol = "wss"; } - const ws = new WebSocket(`${protocol}://${window.location.host}/api/v1/ws/events`); + const dev = import.meta.dev; + + const host = dev ? window.location.host.replace("3000", "7745") : window.location.host; + + const ws = new WebSocket(`${protocol}://${host}/api/v1/ws/events`); ws.onopen = () => { console.debug("connected to server");