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/cvetdv.ru/bitrix/js/im/v2/component/navigation/src/components/ |
Upload File : |
import 'ui.fontawesome4'; import { Core } from 'im.v2.application.core'; import { Layout, PlacementType } from 'im.v2.const'; import { MarketManager } from 'im.v2.lib.market'; import type { ImModelMarketApplication, ImModelLayout } from 'im.v2.model'; import type { JsonObject } from 'main.core'; export type MarketMenuItem = { id: string, text: string, counter: number, active: boolean, iconName: string, loadConfiguration?: ImModelMarketApplication['loadConfiguration'] }; // @vue/component export const MarketApps = { name: 'MarketApps', emits: ['clickMarketItem'], computed: { marketMenuItems(): MarketMenuItem[] { const navigationApps = MarketManager.getInstance().getAvailablePlacementsByType(PlacementType.navigation); return navigationApps.map((item: ImModelMarketApplication) => { return { id: item.id, text: item.title, counter: 0, active: true, iconName: item.options.iconName || '', loadConfiguration: item.loadConfiguration, }; }); }, layout(): ImModelLayout { return this.$store.getters['application/getLayout']; }, canShowMarket(): boolean { return Core.isCloud(); }, }, methods: { onMarketClick() { this.$emit('clickMarketItem', { id: Layout.market.name, }); }, onMarketItemClick(item: MarketMenuItem) { this.$emit('clickMarketItem', { id: Layout.market.name, entityId: item.id, }); }, getMenuItemClasses(item: MarketMenuItem): JsonObject { return { '--selected': this.isItemSelected(item.id), '--active': item.active, }; }, isItemSelected(itemId: string): boolean { return this.layout.name === Layout.market.name && this.layout.entityId === itemId; }, getIconClassNames(item: MarketMenuItem): string { return item.iconName.toString(); }, loc(phraseCode: string): string { return this.$Bitrix.Loc.getMessage(phraseCode); }, }, template: ` <div v-if="canShowMarket" @click="onMarketClick" class="bx-im-navigation__item_container" > <div class="bx-im-navigation__item --active"> <div class="bx-im-navigation__item_icon --market"></div> <div class="bx-im-navigation__item_text" :title="loc('IM_NAVIGATION_MARKET_TITLE')"> {{ loc('IM_NAVIGATION_MARKET_TITLE') }} </div> </div> </div> <div v-for="item in marketMenuItems" :key="item.id" @click="onMarketItemClick(item)" class="bx-im-navigation__item_container" > <div :class="getMenuItemClasses(item)" class="bx-im-navigation__item"> <div class="bx-im-navigation__market-item_icon-container"> <i class="bx-im-navigation__market-item_icon fa" :class="getIconClassNames(item)" aria-hidden="true" ></i> </div> <div class="bx-im-navigation__item_text" :title="item.text">{{item.text}}</div> </div> </div> `, };