diff --git a/dashboard-prime/src/components/skills/AddSkillEvent.vue b/dashboard-prime/src/components/skills/AddSkillEvent.vue index 7a2a5e693..85ba78e1c 100644 --- a/dashboard-prime/src/components/skills/AddSkillEvent.vue +++ b/dashboard-prime/src/components/skills/AddSkillEvent.vue @@ -1,8 +1,211 @@ diff --git a/dashboard-prime/src/components/utils/ExistingUserInput.vue b/dashboard-prime/src/components/utils/ExistingUserInput.vue index d515ab9fd..fea3bf66f 100644 --- a/dashboard-prime/src/components/utils/ExistingUserInput.vue +++ b/dashboard-prime/src/components/utils/ExistingUserInput.vue @@ -6,6 +6,9 @@ import { useAppConfig } from '@/common-components/stores/UseAppConfig.js'; import { useUserInfo } from '@/components/utils/UseUserInfo.js'; import { useFocusState } from '@/stores/UseFocusState.js'; import AccessService from '@/components/access/AccessService.js'; +import { useField } from 'vee-validate'; +import AutoComplete from 'primevue/autocomplete'; +import { useSkillsInputFallthroughAttributes } from '@/components/utils/inputForm/UseSkillsInputFallthroughAttributes.js'; // user type constants const DASHBOARD = 'DASHBOARD'; @@ -46,9 +49,18 @@ const props = defineProps({ type: Array, default: () => ([]), }, + canEnterNewUser: { + type: Boolean, + default: false, + }, + modelValue: Object, + name: { + type: String, + default: 'userIdInput', + } }); -const model = defineModel() +const emit = defineEmits(['update:modelValue']); const selectedSuggestOption = ref(null); const userSuggestOptions = ref([]); @@ -110,10 +122,17 @@ const getUserIdForDisplay = (user) => { } return user.userIdForDisplay; } + +const suggestUsersFromEvent = ({query}) => { + suggestUsers(query) +} const suggestUsers = (query) => { isFetching.value = true; AccessService.suggestUsers(query, suggestUrl.value) .then((suggestedUsers) => { + if (query && props.canEnterNewUser) { + // suggestedUsers.push({ userId: query, label: query }); + } suggestions.value = suggestedUsers.filter((suggestedUser) => !props.excludedSuggestions.includes(suggestedUser.userId)); suggestions.value = suggestions.value.map((suggestedUser) => { const label = getUserIdForDisplay(suggestedUser); @@ -129,39 +148,84 @@ const suggestUsers = (query) => { }); } +const createTagIfNecessary = (userId) => { + console.log(`createTagIfNecessary: ${JSON.stringify(userId)}, type [${typeof userId}]`); + if (!userId) { + value.value = null; + } else if (userId && typeof userId === 'string') { + console.log(`Before string userId: ${userId}, value[${JSON.stringify(value.value)}]`); + value.value = { + userId: userId, + label: userId, + }; + console.log(`After string userId: ${userId}, value[${JSON.stringify(value.value)}]`); + } else { + console.log(`Before non-string userId: ${userId}, value[${JSON.stringify(value.value)}]`); + value.value = userId; + console.log(`After string userId: ${userId}, value[${JSON.stringify(value.value)}]`); + } + emit('update:modelValue', value.value); +} + +const fallthroughAttributes = useSkillsInputFallthroughAttributes() +const { value, errorMessage } = useField(() => props.name) +// , undefined, { +// syncVModel: true, +// }); +const useDropdown = false; +const currentSelectedUser = ref(''); diff --git a/dashboard-prime/src/components/utils/inputForm/SkillsCalendarInput.vue b/dashboard-prime/src/components/utils/inputForm/SkillsCalendarInput.vue index 1efe262ba..1464d603c 100644 --- a/dashboard-prime/src/components/utils/inputForm/SkillsCalendarInput.vue +++ b/dashboard-prime/src/components/utils/inputForm/SkillsCalendarInput.vue @@ -16,7 +16,7 @@ const props = defineProps({ }, label: { type: String, - required: true + required: false }, isRequired: { type: Boolean, @@ -46,7 +46,7 @@ const handleOnInput = (event) => {