diff --git a/frontend/src/components/EmployeeAvatar.vue b/frontend/src/components/EmployeeAvatar.vue
index 046b1cdc7d..11c7f0e98b 100644
--- a/frontend/src/components/EmployeeAvatar.vue
+++ b/frontend/src/components/EmployeeAvatar.vue
@@ -7,7 +7,7 @@
:size="props.size"
/>
- {{ employee?.employee_name }}
+ {{ employee?.employee_name || props.employeeID }}
diff --git a/frontend/src/components/Link.vue b/frontend/src/components/Link.vue
index bbf7d0f3bf..8f21ceb0c8 100644
--- a/frontend/src/components/Link.vue
+++ b/frontend/src/components/Link.vue
@@ -60,7 +60,7 @@ const options = createResource({
},
method: "POST",
transform: (data) => {
- return data.map((doc) => {
+ const mapped = data.map((doc) => {
let title = null
if (doc.label && doc.label !== doc.value){
title = doc.label
@@ -72,6 +72,11 @@ const options = createResource({
value: doc.value,
}
})
+
+ if (props.modelValue && !mapped.find((o) => o.value === props.modelValue)) {
+ mapped.unshift({ label: props.modelValue, value: props.modelValue })
+ }
+ return mapped
},
})
@@ -106,4 +111,19 @@ watch(
() => props.filters,
() => reloadOptions(''),
)
+
+watch(
+ () => props.modelValue,
+ (newVal, oldVal) => {
+ if (!newVal && oldVal) {
+ // value cleared — reload so the dropdown shows the full default list
+ searchText.value = ""
+ reloadOptions("")
+ } else if (newVal && newVal !== oldVal) {
+ // reload so transform can inject it if it's outside the default page
+ const inOptions = (options.data || []).find((o) => o.value === newVal)
+ if (options.data && !inOptions) reloadOptions("")
+ }
+ }
+)
diff --git a/frontend/src/views/Profile.vue b/frontend/src/views/Profile.vue
index c36e24f801..227e0715ce 100644
--- a/frontend/src/views/Profile.vue
+++ b/frontend/src/views/Profile.vue
@@ -124,7 +124,7 @@
const [label, fieldtype] = getFieldInfo(field)
return {
fieldname: field,
- value: employeeDoc.doc[field],
+ value: getFieldValue(field),
label: label,
fieldtype: fieldtype,
}
@@ -138,7 +138,7 @@