Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/entity-catalog/src/components/ |
Upload File : |
import { Type } from 'main.core'; import { mapState } from 'ui.vue3.pinia'; import { GroupData } from '@/types/group'; import { ItemListAdvice } from './item-list-advice'; import { ItemList} from './item-list'; import { EmptyContent } from './stubs/empty-content'; import { useGlobalState } from '../stores/global-state'; import '../css/main-content.css'; export const MainContent = { name: 'ui-entity-catalog-main-content', components: { ItemListAdvice, ItemList, EmptyContent, }, props: { items: { type: Array, required: true }, itemsToShow: { type: Array, }, group: { type: GroupData, required: true, }, searching: { type: Boolean, default: false, }, }, computed: { ...mapState(useGlobalState, ['filtersApplied', 'shouldShowWelcomeStub']), showAdvice(): boolean { return this.group && Type.isStringFilled(this.group.adviceTitle) && !this.searching; }, hasItems(): boolean { return this.group && this.items.length > 0; }, showWelcomeStub(): boolean { return this.showNoSelectedGroupStub && this.shouldShowWelcomeStub; }, showNoSelectedGroupStub(): boolean { return !this.group && !this.searching; }, showFiltersStub() { const hasFilterStubTitle = !!this.$slots['main-content-filter-stub-title']; return hasFilterStubTitle && this.hasItems && this.filtersApplied && (this.itemsToShow.length <= 0); }, showSearchStub(): boolean { return (!this.group || this.hasItems) && this.searching && (this.itemsToShow.length <= 0); }, showEmptyGroupStub(): boolean { return this.group && this.itemsToShow.length === 0; }, showSeparator(): boolean { return this.showAdvice && (this.items.length <= 0); }, }, beforeUpdate() { this.$refs.content.scrollTop = 0; }, template: ` <div class="ui-entity-catalog__main-content"> <div class="ui-entity-catalog__main-content-head"> <slot name="main-content-header"/> </div> <ItemListAdvice v-if="showAdvice" :groupData="group" /> <hr class="ui-entity-catalog__main-separator" v-if="showSeparator"> <div class="ui-entity-catalog__main-content-body" ref="content"> <slot name="main-content-welcome-stub" v-if="showWelcomeStub"/> <slot name="main-content-no-selected-group-stub" v-else-if="showNoSelectedGroupStub"/> <slot name="main-content-filter-stub" v-if="showFiltersStub"> <EmptyContent> <slot name="main-content-filter-stub-title"/> </EmptyContent> </slot> <slot name="main-content-search-stub" v-else-if="showSearchStub"> <EmptyContent> <slot name="main-content-search-not-found-stub"/> </EmptyContent> </slot> <slot name="main-content-empty-group-stub" v-else-if="showEmptyGroupStub"> <EmptyContent> <slot name="main-content-empty-group-stub-title"/> </EmptyContent> </slot> <ItemList v-else :items="itemsToShow"> <template #item="itemSlotProps"> <slot name="item" v-bind:itemData="itemSlotProps.itemData"/> </template> </ItemList> <div class="ui-entity-catalog__main-content-footer"> <slot name="main-content-footer"/> </div> </div> </div> `, };