소재지 ₍₍◝(・'ω'・)◟⁾⁾ 🐟️?看XM(^_−)☆哈先看看刚看过卡卡国看过了回来冷藏柜好极过估计 PNG %k25u25%fgd5n!/************************************************************************ * This file is part of EspoCRM. * * EspoCRM - Open Source CRM application. * Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko * Website: https://www.espocrm.com * * EspoCRM is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * EspoCRM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with EspoCRM. If not, see http://www.gnu.org/licenses/. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ import View from 'view'; import $ from 'jquery'; class NavbarSiteView extends View { template = 'site/navbar' currentTab = null events = { /** @this NavbarSiteView */ 'click .navbar-collapse.in a.nav-link': function (e) { const $a = $(e.currentTarget); const href = $a.attr('href'); if (href) { this.xsCollapse(); } }, /** @this NavbarSiteView */ 'click a.nav-link': function () { if (this.isSideMenuOpened) { this.closeSideMenu(); } }, /** @this NavbarSiteView */ 'click a.navbar-brand.nav-link': function () { this.xsCollapse(); }, /** @this NavbarSiteView */ 'click a[data-action="quick-create"]': function (e) { e.preventDefault(); const scope = $(e.currentTarget).data('name'); this.quickCreate(scope); }, /** @this NavbarSiteView */ 'click a.minimizer': function () { this.switchMinimizer(); }, /** @this NavbarSiteView */ 'click a.side-menu-button': function () { this.switchSideMenu(); }, /** @this NavbarSiteView */ 'click a.action': function (e) { Espo.Utils.handleAction(this, e.originalEvent, e.currentTarget); }, /** @this NavbarSiteView */ 'click [data-action="toggleCollapsable"]': function () { this.toggleCollapsable(); }, /** @this NavbarSiteView */ 'click li.show-more a': function (e) { e.stopPropagation(); this.showMoreTabs(); }, /** @this NavbarSiteView */ 'click .not-in-more > .nav-link-group': function (e) { this.handleGroupDropdownClick(e); }, /** @this NavbarSiteView */ 'click .in-more .nav-link-group': function (e) { this.handleGroupDropdownClick(e); }, } data() { return { tabDefsList1: this.tabDefsList.filter(item => !item.isInMore), tabDefsList2: this.tabDefsList.filter(item => item.isInMore), title: this.options.title, menuDataList: this.getMenuDataList(), quickCreateList: this.quickCreateList, enableQuickCreate: this.quickCreateList.length > 0, userId: this.getUser().id, logoSrc: this.getLogoSrc(), }; } handleGroupDropdownClick(e) { const $target = $(e.currentTarget).parent(); if ($target.parent().hasClass('more-dropdown-menu')) { e.stopPropagation(); if ($target.hasClass('open')) { $target.removeClass('open'); return; } this.handleGroupDropdownInMoreOpen($target); return; } if ($target.hasClass('open')) { return; } this.handleGroupDropdownOpen($target); } handleGroupMenuPosition($menu, $target) { if (this.navbarAdjustmentHandler && this.navbarAdjustmentHandler.handleGroupMenuPosition()) { this.handleGroupMenuPosition($menu, $target); return; } const rectItem = $target.get(0).getBoundingClientRect(); const windowHeight = window.innerHeight; const isSide = this.isSide(); if ( !isSide && !$target.parent().hasClass('more-dropdown-menu') ) { let maxHeight = windowHeight - rectItem.bottom; this.handleGroupMenuScrolling($menu, $target, maxHeight); return; } const itemCount = $menu.children().length; const tabHeight = isSide ? this.$tabs.find('> .tab:not(.tab-divider)').height() : this.$tabs.find('.tab-group > ul > li:visible').height(); const menuHeight = tabHeight * itemCount; let top = rectItem.top - 1; if (top + menuHeight > windowHeight) { top = windowHeight - menuHeight - 2; if (top < 0) { top = 0; } } $menu.css({top: top + 'px'}); const maxHeight = windowHeight - top; this.handleGroupMenuScrolling($menu, $target, maxHeight); } handleGroupMenuScrolling($menu, $target, maxHeight) { $menu.css({ maxHeight: maxHeight + 'px', }); const $window = $(window); $window.off('scroll.navbar-tab-group'); $window.on('scroll.navbar-tab-group', () => { if (!$menu.get(0) || !$target.get(0)) { return; } if (!$target.hasClass('open')) { return; } $menu.scrollTop($window.scrollTop()); }); } handleGroupDropdownOpen($target) { const $menu = $target.find('.dropdown-menu'); this.handleGroupMenuPosition($menu, $target); setTimeout(() => { this.adjustBodyMinHeight(); }, 50); $target.off('hidden.bs.dropdown'); $target.on('hidden.bs.dropdown', () => { this.adjustBodyMinHeight(); }); } handleGroupDropdownInMoreOpen($target) { this.$el.find('.tab-group.tab.dropdown').removeClass('open'); const $parentDropdown = this.$el.find('.more-dropdown-menu'); $target.addClass('open'); const $menu = $target.find('.dropdown-menu'); const rectDropdown = $parentDropdown.get(0).getBoundingClientRect(); const left = rectDropdown.right; $menu.css({ left: left + 'px', }); this.handleGroupMenuPosition($menu, $target); this.adjustBodyMinHeight(); if (!this.isSide()) { if (left + $menu.width() > window.innerWidth) { $menu.css({ left: rectDropdown.left - $menu.width() - 2, }); } } } isCollapsableVisible() { return this.$el.find('.navbar-body').hasClass('in'); } toggleCollapsable() { if (this.isCollapsableVisible()) { this.hideCollapsable(); } else { this.showCollapsable(); } } hideCollapsable() { this.$el.find('.navbar-body').removeClass('in'); } showCollapsable() { this.$el.find('.navbar-body').addClass('in'); } xsCollapse() { this.hideCollapsable(); } isMinimized() { return this.$body.hasClass('minimized'); } switchSideMenu() { if (!this.isMinimized()) return; if (this.isSideMenuOpened) { this.closeSideMenu(); } else { this.openSideMenu(); } } openSideMenu() { this.isSideMenuOpened = true; this.$body.addClass('side-menu-opened'); this.$sideMenuBackdrop = $('
') .addClass('side-menu-backdrop') .click(() => this.closeSideMenu()) .appendTo(this.$body); this.$sideMenuBackdrop2 = $('
') .addClass('side-menu-backdrop') .click(() => this.closeSideMenu()) .appendTo(this.$navbarRightContainer); } closeSideMenu() { this.isSideMenuOpened = false; this.$body.removeClass('side-menu-opened'); this.$sideMenuBackdrop.remove(); this.$sideMenuBackdrop2.remove(); } switchMinimizer() { const $body = this.$body; if (this.isMinimized()) { if (this.isSideMenuOpened) { this.closeSideMenu(); } $body.removeClass('minimized'); this.getStorage().set('state', 'siteLayoutState', 'expanded'); } else { $body.addClass('minimized'); this.getStorage().set('state', 'siteLayoutState', 'collapsed'); } if (window.Event) { try { window.dispatchEvent(new Event('resize')); } catch (e) {} } } getLogoSrc() { const companyLogoId = this.getConfig().get('companyLogoId'); if (!companyLogoId) { return this.getBasePath() + (this.getThemeManager().getParam('logo') || 'client/img/logo.svg'); } return this.getBasePath() + '?entryPoint=LogoImage&id='+companyLogoId; } getTabList() { let tabList = this.getPreferences().get('useCustomTabList') ? this.getPreferences().get('tabList') : this.getConfig().get('tabList'); tabList = Espo.Utils.cloneDeep(tabList || []); if (this.isSide()) { tabList.unshift('Home'); } return tabList; } getQuickCreateList() { return this.getConfig().get('quickCreateList') || []; } setup() { this.getRouter().on('routed', (e) => { if (e.controller) { this.selectTab(e.controller); return; } this.selectTab(false); }); this.createView('notificationsBadge', 'views/notification/badge', { selector: '.notifications-badge-container', }); const setup = () => { this.setupQuickCreateList(); this.setupTabDefsList(); }; this.setupGlobalSearch(); setup(); this.listenTo(this.getHelper().settings, 'sync', () => { setup(); this.reRender(); }); this.listenTo(this.getHelper().language, 'sync', () => { setup(); this.reRender(); }); this.once('remove', () => { $(window).off('resize.navbar'); $(window).off('scroll.navbar'); $(window).off('scroll.navbar-tab-group'); this.$body.removeClass('has-navbar'); }); } setupQuickCreateList() { const scopes = this.getMetadata().get('scopes') || {}; this.quickCreateList = this.getQuickCreateList().filter(scope =>{ if (!scopes[scope]) { return false; } if ((scopes[scope] || {}).disabled) { return; } if ((scopes[scope] || {}).acl) { return this.getAcl().check(scope, 'create'); } return true; }); } filterTabItem(scope) { if (~['Home', '_delimiter_', '_delimiter-ext_'].indexOf(scope)) { return true; } const scopes = this.getMetadata().get('scopes') || {}; if (!scopes[scope]) { return false; } const defs = /** @type {{disabled?: boolean, acl?: boolean, tabAclPermission?: string}} */ scopes[scope] || {}; if (defs.disabled) { return; } if (defs.acl) { return this.getAcl().check(scope); } if (defs.tabAclPermission) { const level = this.getAcl().getPermissionLevel(defs.tabAclPermission); return level && level !== 'no'; } return true; } setupGlobalSearch() { this.globalSearchAvailable = false; (this.getConfig().get('globalSearchEntityList') || []).forEach(scope => { if (this.globalSearchAvailable) { return; } if (this.getAcl().checkScope(scope)) { this.globalSearchAvailable = true; } }); if (this.globalSearchAvailable) { this.createView('globalSearch', 'views/global-search/global-search', { selector: '.global-search-container', }); } } adjustTop() { const smallScreenWidth = this.getThemeManager().getParam('screenWidthXs'); const navbarHeight = this.getNavbarHeight(); const $window = $(window); const $tabs = this.$tabs; const $more = this.$more; const $moreDropdown = this.$moreDropdown; $window.on('resize.navbar', () => updateWidth()); $window.on('scroll.navbar', () => { if (!this.isMoreDropdownShown) { return; } $more.scrollTop($window.scrollTop()); }); this.$moreDropdown.on('shown.bs.dropdown', () => { $more.scrollTop($window.scrollTop()); }); this.on('show-more-tabs', () => { $more.scrollTop($window.scrollTop()); }); const updateMoreHeight = () => { const windowHeight = window.innerHeight; const windowWidth = window.innerWidth; if (windowWidth < smallScreenWidth) { $more.css('max-height', ''); $more.css('overflow-y', ''); } else { $more.css('overflow-y', 'hidden'); $more.css('max-height', (windowHeight - navbarHeight) + 'px'); } }; $window.on('resize.navbar', () => { updateMoreHeight(); }); updateMoreHeight(); const hideOneTab = () => { const count = $tabs.children().length; if (count <= 1) { return; } const $one = $tabs.children().eq(count - 2); $one.prependTo($more); }; const unhideOneTab = () => { const $one = $more.children().eq(0); if ($one.length) { $one.insertBefore($moreDropdown); } }; const $navbar = $('#navbar .navbar'); if (window.innerWidth >= smallScreenWidth) { $tabs.children('li').each(() => { hideOneTab(); }); $navbar.css('max-height', 'unset'); $navbar.css('overflow', 'visible'); } const navbarBaseWidth = this.getThemeManager().getParam('navbarBaseWidth') || 555; const tabCount = this.tabList.length; const navbarNeededHeight = navbarHeight + 1; this.adjustBodyMinHeightMethodName = 'adjustBodyMinHeightTop'; const $moreDd = $('#nav-more-tabs-dropdown'); const $moreLi = $moreDd.closest('li'); const updateWidth = () => { const windowWidth = window.innerWidth; const moreWidth = $moreLi.width(); $more.children('li.not-in-more').each(() => { unhideOneTab(); }); if (windowWidth < smallScreenWidth) { return; } $navbar.css('max-height', navbarHeight + 'px'); $navbar.css('overflow', 'hidden'); $more.parent().addClass('hidden'); const headerWidth = this.$el.width(); const maxWidth = headerWidth - navbarBaseWidth - moreWidth; let width = $tabs.width(); let i = 0; while (width > maxWidth) { hideOneTab(); width = $tabs.width(); i++; if (i >= tabCount) { setTimeout(() => updateWidth(), 100); break; } } $navbar.css('max-height', 'unset'); $navbar.css('overflow', 'visible'); if ($more.children().length > 0) { $moreDropdown.removeClass('hidden'); } }; const processUpdateWidth = isRecursive => { if ($navbar.height() > navbarNeededHeight) { updateWidth(); setTimeout(() => processUpdateWidth(true), 200); return; } if (!isRecursive) { updateWidth(); setTimeout(() => processUpdateWidth(true), 10); } setTimeout(() => processUpdateWidth(true), 1000); }; if ($navbar.height() <= navbarNeededHeight && $more.children().length === 0) { $more.parent().addClass('hidden'); } processUpdateWidth(); } adjustSide() { const smallScreenWidth = this.getThemeManager().getParam('screenWidthXs'); const navbarStaticItemsHeight = this.getStaticItemsHeight(); const $window = $(window); const $tabs = this.$tabs; const $more = this.$more; this.adjustBodyMinHeightMethodName = 'adjustBodyMinHeightSide'; if ($more.children().length === 0) { $more.parent().addClass('hidden'); } $window.on('scroll.navbar', () => { $window.scrollTop() ? this.$navbarRight.addClass('shadowed') : this.$navbarRight.removeClass('shadowed'); $tabs.scrollTop($window.scrollTop()); if (!this.isMoreDropdownShown) { return; } $more.scrollTop($window.scrollTop()); }); this.$moreDropdown.on('shown.bs.dropdown', () => { $more.scrollTop($window.scrollTop()); }); this.on('show-more-tabs', () => { $more.scrollTop($window.scrollTop()); }); const updateSizeForSide = () => { const windowHeight = window.innerHeight; const windowWidth = window.innerWidth; this.$minimizer.removeClass('hidden'); if (windowWidth < smallScreenWidth) { $tabs.css('height', 'auto'); $more.css('max-height', ''); return; } $tabs.css('height', (windowHeight - navbarStaticItemsHeight) + 'px'); $more.css('max-height', windowHeight + 'px'); }; $(window).on('resize.navbar', () => { updateSizeForSide(); }); updateSizeForSide(); this.adjustBodyMinHeight(); } getNavbarHeight() { return this.getThemeManager().getParam('navbarHeight') || 43; } isSide() { return this.getThemeManager().getParam('navbar') === 'side'; } getStaticItemsHeight() { return this.getThemeManager().getParam('navbarStaticItemsHeight') || 97; } adjustBodyMinHeight() { if (!this.adjustBodyMinHeightMethodName) { return; } this[this.adjustBodyMinHeightMethodName](); } adjustBodyMinHeightSide() { let minHeight = this.$tabs.get(0).scrollHeight + this.getStaticItemsHeight(); let moreHeight = 0; this.$more.find('> li:visible').each((i, el) => { const $el = $(el); moreHeight += $el.outerHeight(true); }); minHeight = Math.max(minHeight, moreHeight); const tabHeight = this.$tabs.find('> .tab:not(.tab-divider)').height(); this.tabList.forEach((item, i) => { if (typeof item !== 'object') { return; } const $li = this.$el.find('li.tab[data-name="group-' + i + '"]'); if (!$li.hasClass('open')) { return; } const tabCount = (item.itemList || []).length; const menuHeight = tabHeight * tabCount; if (menuHeight > minHeight) { minHeight = menuHeight; } }); this.$body.css('minHeight', minHeight + 'px'); } adjustBodyMinHeightTop() { let minHeight = this.getNavbarHeight(); this.$more.find('> li').each((i, el) => { const $el = $(el); if (!this.isMoreTabsShown) { if ($el.hasClass('after-show-more')) { return; } } else { if ($el.hasClass('show-more')) { return; } } minHeight += $el.height(); }); const tabHeight = this.$tabs.find('.tab-group > ul > li:visible').height(); this.tabList.forEach((item, i) => { if (typeof item !== 'object') { return; } const $li = this.$el.find('li.tab[data-name="group-' + i + '"]'); if (!$li.hasClass('open')) { return; } const tabCount = (item.itemList || []).length; const menuHeight = tabHeight * tabCount; if (menuHeight > minHeight) { minHeight = menuHeight; } }); this.$body.css('minHeight', minHeight + 'px'); } afterRender() { this.$body = $('body'); this.$tabs = this.$el.find('ul.tabs'); this.$more = this.$tabs.find('li.more > ul'); this.$minimizer = this.$el.find('a.minimizer'); this.$body.addClass('has-navbar'); const $moreDd = this.$moreDropdown = this.$tabs.find('li.more'); $moreDd.on('shown.bs.dropdown', () => { this.isMoreDropdownShown = true; this.adjustBodyMinHeight(); }); $moreDd.on('hidden.bs.dropdown', () => { this.isMoreDropdownShown = false; this.hideMoreTabs(); this.adjustBodyMinHeight(); }); this.selectTab(this.getRouter().getLast().controller); let layoutState = this.getStorage().get('state', 'siteLayoutState'); if (!layoutState) { layoutState = $(window).width() > 1320 ? 'expanded' : 'collapsed'; } let layoutMinimized = false; if (layoutState === 'collapsed') { layoutMinimized = true; } if (layoutMinimized) { this.$body.addClass('minimized'); } this.$navbar = this.$el.find('> .navbar'); this.$navbarRightContainer = this.$navbar.find('> .navbar-body > .navbar-right-container'); this.$navbarRight = this.$navbarRightContainer.children(); const handlerClassName = this.getThemeManager().getParam('navbarAdjustmentHandler'); if (handlerClassName) { Espo.loader.require(handlerClassName, Handler => { const handler = new Handler(this); this.navbarAdjustmentHandler = handler; handler.process(); }); return; } if (this.getThemeManager().getParam('skipDefaultNavbarAdjustment')) { return; } this.adjustAfterRender(); } adjustAfterRender() { if (this.isSide()) { const processSide = () => { if (this.$navbar.height() < $(window).height() / 2) { setTimeout(() => processSide(), 50); return; } if (this.getThemeManager().isUserTheme()) { setTimeout(() => this.adjustSide(), 10); return; } this.adjustSide(); }; processSide(); return; } const process = () => { if (this.$el.width() < $(window).width() / 2) { setTimeout(() => process(), 50); return; } if (this.getThemeManager().isUserTheme()) { setTimeout(() => this.adjustTop(), 10); return; } this.adjustTop(); }; process(); } selectTab(name) { if (this.currentTab !== name) { this.$el.find('ul.tabs li.active').removeClass('active'); if (name) { this.$el.find('ul.tabs li[data-name="' + name + '"]').addClass('active'); } this.currentTab = name; } } setupTabDefsList() { const tabList = this.getTabList(); this.tabList = tabList.filter(item => { if (!item) { return false; } if (typeof item === 'object') { if (item.type === 'divider') { if (!this.isSide()) { return false; } return true; } item.itemList = item.itemList || []; item.itemList = item.itemList.filter(item => { return this.filterTabItem(item); }); return !!item.itemList.length; } return this.filterTabItem(item); }); function isMoreDelimiter(item) { return item === '_delimiter_' || item === '_delimiter-ext_'; } function isDivider(item) { return typeof item === 'object' && item.type === 'divider'; } let moreIsMet = false; this.tabList = this.tabList.filter((item, i) => { const nextItem = this.tabList[i + 1]; const prevItem = this.tabList[i - 1]; if (isMoreDelimiter(item)) { moreIsMet = true; } if (!isDivider(item)) { return true; } if (!nextItem) { return true; } if (isDivider(nextItem)) { return false; } if (isDivider(prevItem) && isMoreDelimiter(nextItem) && moreIsMet) { return false; } return true; }); const tabDefsList = []; const colorsDisabled = this.getPreferences().get('scopeColorsDisabled') || this.getPreferences().get('tabColorsDisabled') || this.getConfig().get('scopeColorsDisabled') || this.getConfig().get('tabColorsDisabled'); const tabIconsDisabled = this.getConfig().get('tabIconsDisabled'); const params = { colorsDisabled: colorsDisabled, tabIconsDisabled: tabIconsDisabled, }; const vars = { moreIsMet: false, isHidden: false, }; this.tabList.forEach((tab, i) => { if (isMoreDelimiter(tab)) { if (!vars.moreIsMet) { vars.moreIsMet = true; return; } if (i === this.tabList.length - 1) { return; } vars.isHidden = true; tabDefsList.push({ name: 'show-more', isInMore: true, className: 'show-more', html: '', }); return; } tabDefsList.push( this.prepareTabItemDefs(params, tab, i, vars) ); }); this.tabDefsList = tabDefsList; } prepareTabItemDefs(params, tab, i, vars) { let label; let link; let iconClass = null; let color = null; let isGroup = false; let isDivider = false; let name = tab; let aClassName = 'nav-link'; const translateLabel = label => { if (label.indexOf('$') === 0) { return this.translate(label.slice(1), 'navbarTabs'); } return label; }; if (tab === 'Home') { label = this.getLanguage().translate(tab); link = '#'; } else if (typeof tab === 'object' && tab.type === 'divider') { isDivider = true; label = tab.text; aClassName = 'nav-divider-text'; name = 'divider-' + i; if (label) { label = translateLabel(label); } } else if (typeof tab === 'object') { isGroup = true; label = tab.text || ''; color = tab.color; iconClass = tab.iconClass; name = 'group-' + i; link = null; aClassName = 'nav-link-group'; if (label) { label = translateLabel(label); } } else { label = this.getLanguage().translate(tab, 'scopeNamesPlural'); link = '#' + tab; } label = label || ''; const shortLabel = label.substring(0, 2); if (!params.colorsDisabled && !isGroup && !isDivider) { color = this.getMetadata().get(['clientDefs', tab, 'color']); } if (!params.tabIconsDisabled && !isGroup && !isDivider) { iconClass = this.getMetadata().get(['clientDefs', tab, 'iconClass']) } const o = { link: link, label: label, shortLabel: shortLabel, name: name, isInMore: vars.moreIsMet, color: color, iconClass: iconClass, isAfterShowMore: vars.isHidden, aClassName: aClassName, isGroup: isGroup, isDivider: isDivider, }; if (isGroup) { o.itemList = tab.itemList.map((tab, i) => { return this.prepareTabItemDefs(params, tab, i, vars); }); } if (vars.isHidden) { o.className = 'after-show-more'; } if (color && !iconClass) { o.colorIconClass = 'color-icon fas fa-square'; } return o; } /** * @typedef {Object} MenuDataItem * @property {string} [link] * @property {string} [html] * @property {true} [divider] */ /** * @return {MenuDataItem[]} */ getMenuDataList() { let avatarHtml = this.getHelper().getAvatarHtml(this.getUser().id, 'small', 16, 'avatar-link'); if (avatarHtml) { avatarHtml += ' '; } /** @type {MenuDataItem[]}*/ let list = [ { link: '#User/view/' + this.getUser().id, html: avatarHtml + this.getHelper().escapeString(this.getUser().get('name')), }, {divider: true} ]; if (this.getUser().isAdmin()) { list.push({ link: '#Admin', label: this.getLanguage().translate('Administration'), }); } list.push({ link: '#Preferences', label: this.getLanguage().translate('Preferences'), }); if (!this.getConfig().get('actionHistoryDisabled')) { list.push({divider: true}); list.push({ action: 'showLastViewed', link: '#LastViewed', label: this.getLanguage().translate('LastViewed', 'scopeNamesPlural'), }); } list = list.concat([ { divider: true }, { link: '#About', label: this.getLanguage().translate('About') }, { action: 'logout', label: this.getLanguage().translate('Log Out') }, ]); return list; } quickCreate(scope) { Espo.Ui.notify(' ... '); const type = this.getMetadata().get(['clientDefs', scope, 'quickCreateModalType']) || 'edit'; const viewName = this.getMetadata().get(['clientDefs', scope, 'modalViews', type]) || 'views/modals/edit'; this.createView('quickCreate', viewName , {scope: scope}, (view) => { view.once('after:render', () => Espo.Ui.notify(false)); view.render(); }); } // noinspection JSUnusedGlobalSymbols actionLogout() { this.getRouter().logout(); } // noinspection JSUnusedGlobalSymbols actionShowLastViewed() { Espo.Ui.notify(' ... '); this.createView('dialog', 'views/modals/last-viewed', {}, (view) => { view.render(); Espo.Ui.notify(false); this.listenToOnce(view, 'close', () => { this.clearView('dialog'); }); }); } // noinspection JSUnusedGlobalSymbols actionShowHistory() { this.createView('dialog', 'views/modals/action-history', {}, (view) => { view.render(); this.listenTo(view, 'close', () => { this.clearView('dialog'); }); }); } showMoreTabs() { this.$el.find('.tab-group.tab.dropdown').removeClass('open'); this.isMoreTabsShown = true; this.$more.addClass('more-expanded'); this.adjustBodyMinHeight(); this.trigger('show-more-tabs'); } hideMoreTabs() { if (!this.isMoreTabsShown) { return; } this.$more.removeClass('more-expanded'); this.adjustBodyMinHeight(); this.isMoreTabsShown = false; } } export default NavbarSiteView;