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/mail/client/filtertoolbar/src/ |
Upload File : |
import { Tag } from 'main.core'; import './css/style.css'; import { Loc } from 'main.core'; import { BaseEvent, EventEmitter } from "main.core.events"; import 'ui.fonts.opensans'; export class FilterToolbar { #wrapper; #filter; #statusBtn = false; #counterBtn; #filterApi; #readAllBtn; #counter; #filterTitle; constructor(config = { wrapper: [], filter: [], }) { EventEmitter.subscribe('BX.Main.Filter:apply', (event) => { let isSeen = this.#filter.getFilterFieldsValues()['IS_SEEN']; if(isSeen === 'N') { this.activateBtn(); } else { this.deactivateBtn(); } }); this.#wrapper = config['wrapper']; this.#filter = config['filter']; this.#filterApi = this.#filter.getApi(); } setCount(num) { num = Number(num); num = isNaN(num) ? 0 : num; if(num !== undefined) { this.#counter.textContent = num; if(num !== 0) { this.#counter.classList.remove('mail-counter-zero'); } else { this.#counter.classList.add('mail-counter-zero'); } } } activateBtn() { this.#statusBtn = true; this.#counterBtn.classList.add('mail-msg-counter-number-selected'); } deactivateBtn() { this.#statusBtn = false; this.#counterBtn.classList.remove('mail-msg-counter-number-selected'); } onClickFilterButton() { if(!this.#statusBtn) { this.activateBtn(); this.setUnreadFilter(); } else { this.deactivateBtn(); this.removeUnreadFilter(); } } removeUnreadFilter() { if (!!this.#filter && (this.#filter instanceof BX.Main.Filter)) { this.#filterApi.setFields({ 'DIR': this.#filter.getFilterFieldsValues()['DIR'], }); this.#filterApi.apply(); } } hideReadAllBtn() { this.#readAllBtn.classList.add('mail-toolbar-hide-element'); } showReadAllBtn() { this.#readAllBtn.classList.remove('mail-toolbar-hide-element'); } hideCounter() { this.#counterBtn.classList.add('mail-toolbar-hide-element'); this.#filterTitle.classList.add('mail-toolbar-hide-element'); } showCounter() { this.#counterBtn.classList.remove('mail-toolbar-hide-element'); this.#filterTitle.classList.remove('mail-toolbar-hide-element'); } setUnreadFilter() { if (!!this.#filter && (this.#filter instanceof BX.Main.Filter)) { this.#filterApi.setFields({ 'DIR': this.#filter.getFilterFieldsValues()['DIR'], 'IS_SEEN': 'N' }); this.#filterApi.apply(); } } build(config ={ filterId: '', }) { const mailFilterToolbar = Tag.render`<div class="mail-filter-toolbar"> <div class="mail-filter-counter" data-role="mail-filter-counter"> <div data-role="mail-filter-title"> ${Loc.getMessage("MAIL_FILTER_TOOLBAR_TITLE")} </div> </div> </div>`; const counterBtn = Tag.render`<span class="mail-toolbar-counter"> <span class="mail-msg-counter-number" data-role="unread-counter-number"></span> <span class="mail-msg-counter-text">${Loc.getMessage("MAIL_FILTER_NOT_READ")}</span> <span class="mail-msg-counter-remove"></span> </span>`; const readAllBtn = Tag.render`<span class="mail-toolbar-counter"> <span class="mail-msg-counter-text">${Loc.getMessage("MAIL_FILTER_READ_ALL")}</span> </span>`; this.#counter = counterBtn.querySelector('[data-role="unread-counter-number"]'); this.#filterTitle = mailFilterToolbar.querySelector('[data-role="mail-filter-title"]'); this.#readAllBtn = readAllBtn; this.#counterBtn = counterBtn; counterBtn.onclick = ()=> { this.onClickFilterButton() } readAllBtn.onclick = ()=> { BX.Mail.Client.Message.List['mail-client-list-manager'].onReadClick('all'); this.removeUnreadFilter(); } const mailFilterCounter = mailFilterToolbar.querySelector('[data-role="mail-filter-counter"]'); mailFilterCounter.append(counterBtn); mailFilterCounter.append(readAllBtn); this.#wrapper.append(mailFilterToolbar); EventEmitter.subscribe('BX.Mail.Home:updatingCounters', function(event) { if(event['data']['name'] === 'dirs') { const counters = event['data']['counters']; const hidden = event['data']['hidden']; const currentDir = event['data']['selectedDirectory']; let currentFolderCount = counters[currentDir]; if(currentDir !== '') { this.showReadAllBtn() } else { currentFolderCount = event['data']['total']; this.hideReadAllBtn() } if(hidden[currentDir] && currentDir !== '') { this.hideCounter(); } else { this.setCount(currentFolderCount); this.showCounter(); } } }.bind(this)); } }