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 @@