search_ui/components/search/SearchItemDetails.vue

155 lines
4.4 KiB
Vue
Raw Permalink Normal View History

2025-02-01 11:06:10 +00:00
<template>
<div class="side-panel me-4" v-if="sidePanel">
<div
class="side-panel-header d-flex justify-content-between align-items-center"
>
<h6 class="text-center">مشخصات کامل مورد جاری</h6>
<a
@click="closeDetailPanel()"
class="close-sidebar-panel"
role="button"
title="Toggle sidebar"
type="button"
>
<span class="tavasi tavasi-Component-294--1"></span>
</a>
</div>
<div class="position-relative redios-castom py-3">
<!-- <button
v-can="'item-info_edit'"
@click="editItem()"
title="ویرایش"
class="btn float-edit-btn"
data-bs-toggle="modal"
data-bs-target="#edit-paper"
>
<i class="tavasi tavasi-Component-242--1"></i>
</button> -->
<div class="side-panel-content firefox-scrollbar">
<form-builder
:previewMode="true"
:formElements="clonedFormElements"
:formData="selectedItemGetter"
:displayMode="'default'"
></form-builder>
<!-- <div class="form-row form-group">
<label class="col-2 " for="title" style="margin:;">عنوان:</label>
<div class="col-1"></div>
<p class="col-9 " id="title" v-html="selectedItem.title"></p>
</div>
<div class="form-row form-group">
<label class="col-2" for="title">شماره:</label>
<div class="col-1"></div>
<p class="col-9" id="number" v-html="selectedItem.number"></p>
</div>
<div class="form-row form-group">
<label class="col-2" for="resources">منبع:</label>
<div class="col-1"></div>
<p class="col-9" id="resources" v-html="selectedItem.resources"></p>
</div>
<div class="form-row form-group">
<label class="col-2" for="date_text">تاریخ:</label>
<div class="col-1"></div>
<p class="col-9" id="date_text" v-html="selectedItem.date_text"></p>
</div>
<div class="form-row form-group">
<label class="col-2" for="text">متن:</label>
<div class="col-1"></div>
<p class="col-9" id="text" v-html="selectedItem.text"></p>
</div> -->
<!-- <div class="d-flex justify-content-start">
<button-component
classes="btn-default"
:buttonText="'نمایش متن'"
@click="showFullDetails"
></button-component>
</div> -->
</div>
</div>
</div>
</template>
<script>
import { mapState, mapActions } from "pinia";
export default {
emits: ["open-form"],
mounted() {
this.changeTypeToLabel(this.searchListActiveSchemaGetter.items);
},
watch: {
searchListActiveSchemaGetter(newValue) {
this.changeTypeToLabel(newValue.items);
},
},
data() {
return {
sidePanel: true,
clonedFormElements: undefined,
};
},
computed: {
...mapState("list", ["selectedProjectGetter", "selectedItemGetter"]),
...mapState(useSearchStore, [
"searchListSchemaGetter",
"searchListActiveSchemaGetter",
"searchListActiveTabGetter",
]),
},
methods: {
closeDetailPanel() {
this.sidePanel = !this.sidePanel;
this.$emit("close-detail-panel", this.sidePanel);
},
// closeSidePaneldetail(){
// this.sidePanel = !this.sidePanel ;
// },
...mapActions("list", ["SET_LIST_COMPONENT_NAME"]),
showFullDetails() {
this.SET_LIST_COMPONENT_NAME({
listComponentName: "ItemList",
selectedItem: this.selectedItemGetter,
});
let pageTitle = this.selectedItemGetter.title;
pageTitle = pageTitle.replaceAll(" ", "-");
this.$router.push({
name: "itemShow",
params: { pageTitle, id: this.selectedItemGetter.id },
});
},
editItem() {
this.$emit("open-form", this.selectedItemGetter);
},
changeTypeToLabel(data) {
data.forEach((element, index) => {
if (
element.key == "begin_date" ||
element.key == "end_date" ||
element.key == "date"
)
data[index].type = "date";
else data[index].type = "label";
});
this.clonedFormElements = data;
},
},
};
</script>
<style scoped>
.side-panel-content {
height: calc(100dvh - 17em);
overflow-y: auto;
}
.float-edit-btn {
position: absolute;
left: 1em;
top: 1em;
}
</style>