diff --git a/src/components/Search/OcResourceSearchSimple/OcResourceSearchSimple.vue b/src/components/Search/OcResourceSearchSimple/OcResourceSearchSimple.vue index 5a91e1924aab838158b588387e95da6f6cf20c1d..224f91b90e3ecaaf4b6394f879e66b72055c631c 100644 --- a/src/components/Search/OcResourceSearchSimple/OcResourceSearchSimple.vue +++ b/src/components/Search/OcResourceSearchSimple/OcResourceSearchSimple.vue @@ -17,7 +17,7 @@ /> <InputGroupAddon class="px-4 cursor-pointer hover:text-black hover:bg-gray-100" - @click="model = {params:{}}" + @click="model = {params:{}}, emit('submit')" > <i class="fa-solid fa-xmark"/> </InputGroupAddon> @@ -47,6 +47,7 @@ :inputProps="{ fluid: true }" :initialValue="model.params[key as keyof typeof SearchQueryParams]" v-on:updateValue="handleChange($event, key)" + v-on:keyup.enter="searchPop.toggle($event), emit('submit')" /> </div> <div class="text-right"> @@ -55,6 +56,24 @@ </Button> </div> </Popover> + <div class="display flex flex-row flex-wrap gap-2 mb-4"> + <Chip + v-if="model.q" + class="bg-gray-200" + :label="model.q" + removable + @remove="model.q='', emit('submit')" + /> + <template v-for="key in Object.keys(SearchQueryParams)" v-bind:key="key"> + <Chip + v-for="value in model.params[key as keyof typeof SearchQueryParams]" v-bind:key="value" + class="bg-gray-200" + :label="translateValue(searchMetadata[key as keyof typeof SearchQueryParams].label) + ': ' + value" + removable + @remove="model.params[key]=model.params[key as keyof typeof SearchQueryParams]?.filter((v) => v != value), emit('submit')" + /> + </template> + </div> </template> <script setup lang="ts"> @@ -63,6 +82,7 @@ import InputGroup from 'primevue/inputgroup'; import InputGroupAddon from 'primevue/inputgroupaddon'; import Button from 'primevue/button' import Popover from 'primevue/popover' +import Chip from 'primevue/chip'; import { SearchQueryParams, type OcSearchQuery } from '@/declarations' import { useI18n } from 'vue-i18n' import { ref } from 'vue' diff --git a/src/components/Search/OcSearchResultCard/OcSearchResultCard.vue b/src/components/Search/OcSearchResultCard/OcSearchResultCard.vue index a3d97c9e8354ee7e519c688ba0686c8e826c6595..09a20cbd7b2cee206ed902f501be7178d98471f4 100644 --- a/src/components/Search/OcSearchResultCard/OcSearchResultCard.vue +++ b/src/components/Search/OcSearchResultCard/OcSearchResultCard.vue @@ -134,7 +134,7 @@ const creators = computed(() => { const creatorName = (creator: OcPerson | OcOrganization) => { if (typeof creator === 'string'){ return creator } - else if (Object.keys(creator).length === 1){ return creator['@id'] } + else if (Object.keys(creator).length === 1 && creator['@id']){ return creator['@id'] } else if (creator.name){ if (typeof creator.name === 'string'){ return creator.name }