pip-webui
Version:
HTML5 UI for LOB applications
1 lines • 24.8 kB
JavaScript
!function(){"use strict";angular.module("pipNav",["pipDropdown","pipTabs","pipAppBar","pipSideNav"])}(),function(n){try{n=angular.module("pipNav.Templates")}catch(e){n=angular.module("pipNav.Templates",[])}n.run(["$templateCache",function(n){n.put("appbar/appbar.html",'<md-toolbar md-theme-watch="true" ng-if="!$partialReset" ng-class="config.ngClasses" class="{{ config.cssClass }} color-primary-bg"><div class="md-toolbar-tools rp24-flex lp24-flex" ng-if="!searchEnabled"><md-button class="md-icon-button flex-fixed p0" ng-if="config.navIconType != \'none\'" ng-class="{ \'pip-third-party\': getParty() && !getUser(\'owner\') }" ng-click="onNavIconClick()" aria-label="menu"><md-icon ng-if="config.navIconType==\'menu\' && (!getParty() || getUser(\'owner\'))" md-svg-icon="icons:menu"></md-icon><pip-avatar ng-if="config.navIconType==\'menu\' && (getParty() && !getUser(\'owner\'))" pip-rebind-avatar="true" pip-rebind="true" pip-image-url="partyAvatarUrl" pip-party-id="getParty(\'id\')" class="pip-face" pip-party-name="getParty(\'name\')"></pip-avatar><md-icon ng-if="config.navIconType==\'back\'" md-svg-icon="icons:arrow-left"></md-icon></md-button><div class="flex-var text-overflow"><img class="pip-appbar-logo" ng-if="config.titleType == \'logo\'" ng-src="{{config.titleLogo}}"><div ng-if="config.titleType == \'text\'" class="text-overflow pip-appbar-text"><span ng-if="config.searchCriteria" ng-click="onSearchEnable()">{{config.searchCriteria}} -</span><span class="text-overflow">{{config.titleText | translate}}</span></div><div ng-if="config.titleType==\'breadcrumb\'"><div class="hide-xs text-overflow"><span ng-if="config.searchCriteria" ng-click="onSearchEnable()">{{config.searchCriteria}} -</span><span class="pip-appbar-breadcrumb" ng-repeat-start="item in config.titleBreadcrumb" ng-click="onBreadcrumbClick(item)" ng-init="stepWidth = 100/(config.titleBreadcrumb.length + 1)" ng-style="{\'max-width\': stepWidth + \'%\'}">{{item.title | translate}}</span><md-icon ng-repeat-end="" md-svg-icon="icons:chevron-right"></md-icon><span class="pip-title">{{config.titleText | translate}}</span></div><md-menu xmd-offset="0 48" class="hide-gt-xs"><span class="pip-appbar-mobile-breadcrumb layout-row" ng-click="$mdOpenMenu()" md-ink-ripple="" aria-label="open breadcrumb"><span class="text-overflow"><span ng-if="config.searchCriteria" ng-click="onSearchEnable()">{{config.searchCriteria}} -</span> {{config.titleText | translate}}</span><md-icon class="m0 flex-none" md-svg-icon="icons:triangle-down"></md-icon></span><md-menu-content width="3"><md-menu-item ng-repeat="item in config.titleBreadcrumb"><md-button ng-click="onBreadcrumbClick(item)"><span>{{item.title | translate}}</span></md-button></md-menu-item><md-menu-item><md-button><span class="text-grey">{{config.titleText | translate}}</span></md-button></md-menu-item></md-menu-content></md-menu></div></div><div class="flex-fixed pip-appbar-actions layout-row" ng-class="{ \'pip-language-action\': config.actionsType==\'language\' }"><md-menu ng-if="config.actionsType==\'language\'" md-position-mode="target-right target"><span class="pip-appbar-language" ng-click="$mdOpenMenu()" aria-label="language selection">{{language() | translate}}<md-icon md-svg-icon="icons:triangle-down"></md-icon></span><md-menu-content width="3"><md-menu-item ng-repeat="lang in config.languages"><md-button ng-click="onLanguageClick(lang)">{{lang | translate}}</md-button></md-menu-item></md-menu-content></md-menu><md-button class="md-icon-button m0" ng-if="config.searchVisible" ng-click="onSearchEnable()" aria-label="open search"><md-icon md-svg-icon="icons:search"></md-icon></md-button><div ng-if="config.actionsType==\'list\'"><md-menu md-position-mode="target-right target" ng-repeat="action in config.primaryGlobalActions"><md-button class="pip-appbar-action md-icon-button m0" ng-class="{ \'pip-appbar-hide-sm\': action.hideSmall }" ng-click="onActionClick(action, $mdOpenMenu);" ng-hide="actionHidden(action)" aria-label="{{action.tooltip | translate}}"><div class="pip-appbar-badge color-badge-bg" ng-if="action.count > 0">{{actionCount(action)}}</div><md-icon md-svg-icon="{{action.icon}}"></md-icon></md-button><md-menu-content width="3" ng-show="action.menu"><md-menu-item ng-repeat-start="subAction in action.subActions" ng-if="!subAction.divider" ng-hide="actionHidden(subAction)"><md-button ng-hide="subAction.divider" ng-click="onActionClick(subAction)">{{subAction.title | translate}}</md-button></md-menu-item><md-menu-divider ng-if="subAction.divider" ng-repeat-end=""></md-menu-divider></md-menu-content></md-menu><md-menu md-position-mode="target-right target" ng-repeat="action in config.primaryLocalActions"><md-button class="pip-appbar-action md-icon-button m0" ng-class="{ \'pip-appbar-hide-sm\': action.hideSmall, \'pip-appbar-show-sm\': action.showSmall,}" ng-click="onActionClick(action, $mdOpenMenu);" ng-hide="actionHidden(action)" aria-label="{{action.tooltip | translate}}"><div class="pip-appbar-badge" ng-show="action.count > 0">{{actionCount(action)}}</div><md-icon md-svg-icon="{{action.icon}}"></md-icon></md-button><md-menu-content width="3"><md-menu-item ng-repeat-start="subAction in action.subActions" ng-if="!subAction.divider" ng-hide="actionHidden(subAction)"><md-button ng-hide="subAction.divider" ng-click="onActionClick(subAction)">{{subAction.title | translate}}</md-button></md-menu-item><md-menu-divider ng-if="subAction.divider" ng-repeat-end=""></md-menu-divider></md-menu-content></md-menu><md-menu ng-if="secondaryActionsVisible()" md-position-mode="target-right target"><md-button class="md-icon-button m0" ng-click="onSecondaryActionClick(); openMenu($mdOpenMenu, $event);" aria-label="open actions"><md-icon md-svg-icon="icons:vdots"></md-icon></md-button><md-menu-content width="3"><md-menu-item ng-repeat-start="action in config.secondaryLocalActions" ng-if="!action.divider" ng-hide="actionHidden(action)"><md-button ng-hide="action.divider" ng-click="onActionClick(action)">{{action.title | translate}}</md-button></md-menu-item><md-menu-divider ng-if="action.divider" ng-repeat-end=""></md-menu-divider><md-menu-divider ng-if="secondaryDividerVisible()"></md-menu-divider><md-menu-item ng-repeat-start="action in config.secondaryGlobalActions" ng-if="!action.divider" ng-hide="actionHidden(action)"><md-button ng-hide="action.divider" ng-click="onActionClick(action)">{{action.title | translate}}</md-button></md-menu-item><md-menu-divider ng-if="action.divider" ng-repeat-end=""></md-menu-divider></md-menu-content></md-menu></div></div></div><div class="md-toolbar-tools layout-row" ng-if="searchEnabled"><md-button class="md-icon-button" aria-label="start search" ng-click="onSearchClick()"><md-icon md-svg-icon="icons:search"></md-icon></md-button><input class="pip-search-text flex" type="search" ng-model="search.text" ng-keydown="onSearchKeyDown($event)"><md-button class="md-icon-button" aria-label="clear search" ng-click="onSearchClear()"><md-icon md-svg-icon="icons:cross-circle"></md-icon></md-button></div></md-toolbar>')}])}(),function(n){try{n=angular.module("pipNav.Templates")}catch(e){n=angular.module("pipNav.Templates",[])}n.run(["$templateCache",function(n){n.put("dropdown/dropdown.html",'<md-content class="md-subhead md-hue-1 {{class}}" ng-if="show()" ng-class="{\'md-whiteframe-3dp\': $mdMedia(\'xs\')}"><div class="pip-divider position-top m0"></div><md-select ng-model="selectedIndex" ng-disabled="disabled()" md-container-class="pip-full-width-dropdown" aria-label="DROPDOWN" md-ink-ripple="" md-on-close="onSelect(selectedIndex)"><md-option ng-repeat="action in actions" value="{{ ::$index }}" ng-selected="activeIndex == $index ? true : false">{{ (action.title || action.name) | translate }}</md-option></md-select></md-content>')}])}(),function(n){try{n=angular.module("pipNav.Templates")}catch(e){n=angular.module("pipNav.Templates",[])}n.run(["$templateCache",function(n){n.put("tabs/tabs.html",'<md-toolbar class="pip-nav {{ class }}" ng-class="{\'pip-visible\': show(), \'pip-shadow\': showShadow()}"><md-tabs ng-if="$mdMedia(\'gt-xs\')" md-selected="activeTab" ng-class="{\'disabled\': disabled()}" md-stretch-tabs="true" md-dynamic-height="true"><md-tab ng-repeat="tab in tabs track by $index" ng-disabled="tabDisabled($index)" md-on-select="onSelect($index)"><md-tab-label>{{ ::tab.nameLocal }}<div class="pip-tabs-badge color-badge-bg" ng-if="tab.newCounts > 0 && tab.newCounts <= 99">{{ ::tab.newCounts }}</div><div class="pip-tabs-badge color-badge-bg" ng-if="tab.newCounts > 99">!</div></md-tab-label></md-tab></md-tabs><md-content class="md-subhead md-hue-1" ng-if="$mdMedia(\'xs\')"><div class="pip-divider position-top m0"></div><md-select ng-model="activeIndex" ng-disabled="disabled()" md-container-class="pip-full-width-dropdown" aria-label="SELECT" md-ink-ripple="" md-on-close="onSelect(activeIndex)"><md-option ng-repeat="tab in tabs track by $index" value="{{ ::$index }}">{{ ::tab.nameLocal }}<div class="pip-tabs-badge color-badge-bg" ng-if="tab.newCounts > 0 && tab.newCounts <= 99">{{ ::tab.newCounts }}</div><div class="pip-tabs-badge color-badge-bg" ng-if="tab.newCounts > 99">!</div></md-option></md-select></md-content></md-toolbar>')}])}(),function(n){try{n=angular.module("pipNav.Templates")}catch(e){n=angular.module("pipNav.Templates",[])}n.run(["$templateCache",function(n){n.put("sidenav/sidenav.html",'<md-sidenav class="md-sidenav-left md-whiteframe-z2 pip-sidenav color-content-bg" md-component-id="pip-sidenav" ng-if="!$partialReset" pip-focused=""><md-toolbar class="pip-sidenav-header" ng-class="{\'pip-sidenav-owner\': getUser(\'owner\')}" md-theme="{{ $theme|| getUser(\'theme\') || config.theme }}" ng-hide="!getParty() && !primaryPartyAvatar && !secondaryPartyAvatar"><md-button class="pip-sidenav-party md-icon-button" ng-click="onPartyClick()" aria-label="current party"><pip-avatar ng-if="!$avatarReset" pip-party-id="getParty(\'id\')" pip-default-icon="icon-person" pip-party-name="getParty(\'name\')" pip-image-url="primaryPartyAvatar" pip-rebind-avatar="true" pip-rebind="true"></pip-avatar></md-button><md-button class="pip-sidenav-user md-icon-button" ng-click="onUserClick()" ng-hide="getUser(\'owner\')" aria-label="current user"><pip-avatar class="pic-pic pip-face-ld" ng-if="!$avatarReset" pip-default-icon="icon-person" pip-rebind="true" pip-rebind-avatar="true" pip-party-id="getUser(\'id\')" pip-party-name="getUser(\'name\')" pip-image-url="secondaryPartyAvatar"></pip-avatar></md-button><div class="pip-sidenav-party-text"><a class="pip-sidenav-party-pri cursor-pointer" ng-click="onPartyClick()">{{ partyName || getParty(\'name\')}}</a><div class="pip-sidenav-party-sec" ng-show="getConnection() && !getUser(\'owner\')">{{getConnection(\'relation\') | translate}} <span ng-show="getConnection(\'relation_since\')">{{::\'SIDENAV_SINCE\' | translate}} {{getConnection(\'relation_since\') | formatLongDate}}</span></div></div></md-toolbar><md-list><div class="pip-section" ng-repeat="section in config.sections" ng-hide="section.access && !section.access(getParty(), getUser(), section)"><md-divider ng-show="$index > 0 && !isSectionEmpty(section.links)"></md-divider><md-subheader ng-show="section.title">{{::section.title | translate}}</md-subheader><md-list-item class="pip-focusable no-border" ng-repeat="link in section.links" ng-click="onLinkClick($event, link)" ng-hide="link.access && !link.access(getParty(), getUser(), link)"><md-icon md-svg-icon="{{link.icon}}" ng-hide="!link.icon" class="tm0 bm0"></md-icon><p>{{::link.title | translate}}</p></md-list-item></div></md-list></md-sidenav>')}])}(),function(){"use strict";var n=angular.module("pipDropdown",["pipAssert","pipNav.Templates"]);n.directive("pipDropdown",["$mdMedia","pipAssert",function(n,e){return{restrict:"E",scope:{ngDisabled:"&",actions:"=pipActions",showDropdown:"&pipShow",activeIndex:"=pipActiveIndex",select:"=pipDropdownSelect"},templateUrl:"dropdown/dropdown.html",controller:["$scope","$element","$attrs","localStorageService",function(i,t,a,o){i.class=(a.class||"")+" md-"+o.get("theme")+"-theme",e.isArray(i.actions,"pipDropdown: pip-actions attribute should take an array, but take "+typeof i.actions),i.$mdMedia=n,i.actions=i.actions&&_.isArray(i.actions)?i.actions:[],i.activeIndex=i.activeIndex||0,i.disabled=function(){return!!i.ngDisabled()&&i.ngDisabled()},i.onSelect=function(n){i.activeIndex=n,i.select&&i.select(i.actions[n],i.activeIndex)},i.show=function(){return!i.showDropdown()||i.showDropdown()}}]}}])}(),function(n,e,i){"use strict";var t=n.module("pipAppBar",["ngMaterial","pipTranslate","pipNav.Templates","pipAppBar.Service"]);t.config(["pipTranslateProvider",function(n){n.translations("en",{APPBAR_SEARCH:"Search"}),n.translations("ru",{APPBAR_SEARCH:"Поиск"})}]),t.directive("pipAppbar",function(){return{restrict:"E",scope:{title:"=pipTitle",showMenu:"=pipShowMenu",localActions:"=pipLocalActions",globalActions:"=pipGlobalActions",partyAvatarUrl:"=pipPartyAvatarUrl"},replace:!1,templateUrl:function(n,e){return"appbar/appbar.html"},controller:"pipAppBarController"}}),t.controller("pipAppBarController",["$scope","$element","$attrs","$rootScope","$window","$state","$location","pipTranslate","pipAppBar",function(n,t,a,o,c,s,r,l,d){function p(e,i){n.originatorEv=i,e(i)}function u(n){if(o.$party)return n?o.$party[n]:o.$party}function m(n){if(o.$user)return n?o.$user[n]:o.$user}function g(e,i){n.config=i,n.searchEnabled=!1,n.search.text=""}function b(){return l.use()}function v(n){return n.access&&!n.access(o.$party,o.$user,n)}function h(n){return null===n.count||n.count<=0?"":n.count>99?"!":n.count}function f(n){var i=0;return e.each(n,function(n){v(n)||i++}),i}function y(){return f(n.config.secondaryGlobalActions)>0||f(n.config.secondaryLocalActions)>0}function w(){return f(n.config.secondaryGlobalActions)>0&&f(n.config.secondaryLocalActions)>0}function A(){var i,t;return e.isFunction(n.config.navIconCallback)?void n.config.navIconCallback():"back"!==n.config.navIconType?void o.$broadcast("pipAppBarNavIconClicked"):void("breadcrumb"===n.config.titleType?(i=n.config.titleBreadcrumb,e.isArray(i)&&i.length>0?(t=i[i.length-1].click,e.isFunction(t)?t():c.history.back()):c.history.back()):c.history.back())}function C(n){e.isFunction(n.click)&&n.click(n)}function k(n){setTimeout(function(){l.use(n),o.$apply()},0)}function $(n){var e,i={};if(null===n)return null;for(e in n)n.hasOwnProperty(e)&&(":party_id"===n[e]?i[e]=o.$party?o.$party.id:null:":user_id"===n[e]?i[e]=o.$user?o.$user.id:null:i[e]=n[e]);return i}function T(n){var e;return null===n?null:(e=n.replace(":party_id",o.$party?o.$party.id:""),e=e.replace(":user_id",o.user?o.$user.id:""))}function S(){var n;setTimeout(function(){n=i(".pip-search-text"),n.length>0&&n.focus()},0)}function x(e,i){if(e&&!e.divider)return e.close&&(n.originatorEv=null),e.menu?void i(n.originatorEv):e.callback?void e.callback():e.href?void(c.location.href=T(e.href)):e.url?void r.url(T(e.url)):e.state?void s.go(e.state,$(e.stateParams)):void(e.event?o.$broadcast(e.event):o.$broadcast("pipAppBarActionClicked",e.name))}function I(){n.search.text=n.config.searchCriteria,n.searchEnabled=!0,S()}function N(){var e=n.search.text;n.search.text="",n.searchEnabled=!1,n.config.searchCallback?n.config.searchCallback(e):o.$broadcast("pipAppBarSearchClicked",e)}function P(){n.search.text?(n.search.text="",S()):(n.searchEnabled=!1,N())}function L(e){return 13===e.keyCode?void n.onSearchClick():void(27===e.keyCode&&(n.searchEnabled=!1))}n.title&&d.showTitleText(n.title),n.showMenu&&d.showMenuNavIcon(),t.addClass("pip-appbar"),n.$emit("pipResizeWindow"),n.config=d.config(),n.localActions&&(d.showLocalActions(),n.config.primaryLocalActions=n.localActions[0],n.config.secondaryLocalActions=n.localActions[1]),n.globalActions&&(d.showLocalActions(),n.config.primaryGlobalActions=n.globalActions[0],n.config.secondaryGlobalActions=n.globalActions[0]),n.searchEnabled=!1,n.search={text:""},o.$on("pipAppBarChanged",g),n.language=b,n.actionHidden=v,n.actionCount=h,n.secondaryActionsVisible=y,n.secondaryDividerVisible=w,n.onNavIconClick=A,n.onBreadcrumbClick=C,n.onLanguageClick=k,n.onActionClick=x,n.onSearchEnable=I,n.onSearchClick=N,n.onSearchClear=P,n.onSearchKeyDown=L,n.getParty=u,n.getUser=m,n.openMenu=p}])}(window.angular,window._,window.jQuery),function(n,e){"use strict";var i=n.module("pipAppBar.Service",[]);i.provider("pipAppBar",function(){function n(n){return n&&(s.appTitleText=n),s.appTitleText}function i(n){return n&&(s.appTitleLogo=n),s.appTitleLogo}function t(n){return s.theme=n||s.theme,s.theme}function a(n,e){s.primaryGlobalActions=n||[],s.secondaryGlobalActions=e||[]}function o(n){s.primaryGlobalActions=n||[]}function c(n){s.secondaryGlobalActions=n||[]}var s={appTitleText:null,appTitleLogo:"images/piplife_logo.svg",theme:"blue",cssClass:"",ngClasses:{},navIconType:"none",navIconCallback:!1,titleType:"none",titleLogo:null,titleText:null,titleBreadcrumb:null,actionsType:"none",languages:["en","ru"],searchVisible:!1,searchCriteria:"",searchHistory:[],searchCallback:null,primaryGlobalActions:[],primaryLocalActions:[],secondaryGlobalActions:[],secondaryLocalActions:[]};this.appTitleText=n,this.appTitleLogo=i,this.theme=t,this.globalActions=a,this.globalPrimaryActions=o,this.globalSecondaryActions=c,this.$get=["$rootScope",function(n){function i(){return s}function t(n){return void 0!=n&&(s.cssClass=n,S()),s.cssClass}function a(){s.ngClasses["pip-shadow"]=!1,s.ngClasses["pip-shadow-sm"]=!0,s.ngClasses["pip-shadow-xs"]=!1,S()}function o(){s.ngClasses["pip-shadow"]=!1,s.ngClasses["pip-shadow-sm"]=!0,s.ngClasses["pip-shadow-xs"]=!0,S()}function c(){s.ngClasses["pip-shadow"]=!0,S()}function r(){s.ngClasses["pip-shadow"]=!1,s.ngClasses["pip-shadow-sm"]=!1,s.ngClasses["pip-shadow-xs"]=!1,S()}function l(){s.navIconType="none",s.navIconCallback=null,S()}function d(n){s.navIconType="menu",s.navIconCallback=n,S()}function p(n){s.navIconType="back",s.navIconCallback=n,S()}function u(){s.titleType="none",s.titleLogo=null,s.titleText=null,s.titleBreadcrumb=null,S()}function m(n){s.titleType="logo",s.titleLogo=n,s.titleText=null,s.titleBreadcrumb=null,S()}function g(n){s.titleType="text",s.titleLogo=null,s.titleText=n,s.titleBreadcrumb=null,S()}function b(n,i){e.isArray(n)&&(i=n,n=i[i.length-1].title,i.splice(i.length-1,1)),s.titleType="breadcrumb",s.titleLogo=null,s.titleText=n,s.titleBreadcrumb=i,i.length>0?(s.navIconType="none"===s.navIconType?"back":s.navIconType,s.navIconCallback=i[i.length-1]):(s.navIconType="menu",s.navIconCallback=null),S()}function v(){m(s.appTitleLogo)}function h(){g(s.appTitleText)}function f(){s.actionsType="none",s.primaryLocalActions=[],s.secondaryLocalActions=[],S()}function y(n){s.actionsType="language",s.languages=n||s.languages,S()}function w(n,e){s.actionsType="list",s.primaryLocalActions=n||[],s.secondaryLocalActions=e||[],S()}function A(n,i){e.each(s.primaryGlobalActions,function(e){e.name===n&&(e.count=i)}),e.each(s.primaryLocalActions,function(e){e.name===n&&(e.count=i)}),S()}function C(n,e,i){s.searchVisible=!0,s.searchCallback=n,s.searchCriteria=e,s.searchHistory=i,S()}function k(){s.searchVisible=!1,s.searchCallback=null,s.searchCriteria=null,S()}function $(n){s.searchCriteria=n,S()}function T(n){s.searchHistory=n,S()}function S(){n.$broadcast("pipAppBarChanged",s)}return{config:i,cssClass:t,hideNavIcon:l,showMenuNavIcon:d,showBackNavIcon:p,showAppTitleLogo:v,showAppTitleText:h,showTitleLogo:m,showTitleText:g,showTitleBreadcrumb:b,hideTitle:u,showLanguage:y,showLocalActions:w,hideLocalActions:f,updateActionCount:A,showSearch:C,hideSearch:k,updateSearchCriteria:$,updateSearchHistory:T,showShadow:c,showShadowSm:a,showShadowSmXs:o,hideShadow:r}}]})}(window.angular,window._),function(){"use strict";var n=angular.module("pipTabs",["pipAssert","pipNav.Templates"]);n.directive("pipTabs",["$mdMedia","pipAssert",function(n,e){return{restrict:"E",scope:{ngDisabled:"&",tabs:"=pipTabs",showTabs:"&pipShowTabs",showTabsShadow:"&pipTabsShadow",activeIndex:"=pipActiveIndex",select:"=pipTabsSelect"},templateUrl:"tabs/tabs.html",controller:["$scope","$element","$attrs","$mdMedia","localStorageService","pipTranslate",function(n,i,t,a,o,c){n.class=(t.class||"")+" md-"+o.get("theme")+"-theme",e.isArray(n.tabs,"pipTabs: pipTabs attribute should take an array"),n.$mdMedia=a,n.tabs=n.tabs&&_.isArray(n.tabs)?n.tabs:[],n.tabs.length>0&&n.tabs[0].title?c.translateObjects(n.tabs,"title","nameLocal"):c.translateObjects(n.tabs,"name","nameLocal"),n.activeIndex=n.activeIndex||0,n.activeTab=n.activeIndex,n.disabled=function(){if(n.ngDisabled)return n.ngDisabled()},n.tabDisabled=function(e){return n.disabled()&&n.activeIndex!=e},n.onSelect=function(e){n.disabled()||(n.activeIndex=e,n.activeTab=n.activeIndex,n.select&&n.select(n.tabs[n.activeIndex],n.activeIndex))},n.showShadow=function(){return!!n.showTabsShadow&&n.showTabsShadow()},n.show=function(){return!n.showTabs||n.showTabs()}}]}}])}(),function(){"use strict";var n=angular.module("pipSideNav",["ngMaterial","pipTranslate","pipFocused","pipNav.Templates","pipSideNav.Service"]);n.config(["pipTranslateProvider",function(n){n.translations("en",{SIDENAV_SINCE:"since"}),n.translations("ru",{SIDENAV_SINCE:"с"})}]),n.directive("pipSidenav",function(){return{restrict:"EA",scope:{primaryPartyAvatar:"=pipPrimaryAvatar",secondaryPartyAvatar:"=pipSecondaryAvatar",partyName:"=pipName"},replace:!1,templateUrl:"sidenav/sidenav.html",controller:"pipSideNavController"}}),n.controller("pipSideNavController",["$scope","$element","$state","$rootScope","$window","$location","$timeout","pipState","pipTranslate","pipSideNav",function(n,e,i,t,a,o,c,s,r,l){function d(n){if(t.$party)return n?t.$party[n]:t.$party}function p(n){if(t.$user)return n?t.$user[n]:t.$user}function u(n){if(t.$connection)return n?t.$connection[n]:t.$connection}function m(n){return n&&n.access&&!n.access(t.$party,t.$user,n)}function g(n){var e=!0;return _.each(n,function(n){m(n)||(e=!1)}),e}function b(n){l.open()}function v(e,i){n.config=i}function h(){t.$broadcast("pipSideNavUserClicked"),l.close()}function f(){t.$broadcast("pipSideNavPartyClicked"),l.close()}function y(n){if(null==n)return null;var e={};for(var i in n)n.hasOwnProperty(i)&&(":party_id"==n[i]?e[i]=t.$party?t.$party.id:null:":user_id"==n[i]?e[i]=t.$user?t.$user.id:null:e[i]=n[i]);return e}function w(n){if(null==n)return null;var e=n.replace(":party_id",t.$party?t.$party.id:"");return e=e.replace(":user_id",t.$user?t.$user.id:"")}function A(n,e){return n.stopPropagation(),e?e.href?e.href.split("?")[0]===a.location.href.split("?")[0]?void l.close():(l.close(),void c(function(){a.location.href=w(e.href)},300)):e.url?e.url.split(/[\s\/?]+/)[1]===o.url().split(/[\s\/?]+/)[1]?void l.close():(l.close(),void c(function(){o.url(w(e.url))},300)):e.state?i.current.name===e.state?void l.close():(l.close(),void c(function(){s.go(e.state,y(e.stateParams))},300)):(e.event&&t.$broadcast("pipSideNavLinkClicked",e.event),void l.close()):void l.close()}e.addClass("pip-sidenav"),n.config=l.config(),n.$avatarReset=!1,t.$on("pipAppBarNavIconClicked",b),t.$on("pipSideNavChanged",v),n.itemVisible=m,n.onUserClick=h,n.onPartyClick=f,n.onLinkClick=A,n.isSectionEmpty=g,n.getParty=d,n.getUser=p,n.getConnection=u}])}(),function(){"use strict";var n=angular.module("pipSideNav.Service",["pipAssert","pipDebug"]);n.provider("pipSideNav",["pipAssertProvider","pipDebugProvider",function(n,e){function i(n){return o.theme=n||o.theme,o.theme}function t(e){n.isArray(e,"pipSideNavProvider.sections or pipSideNav.sections: sections should be an array"),_.each(e,function(e,i){e.access&&n.isFunction(e.access,"pipSideNavProvider.sections or pipSideNav.sections: in section number "+i+" with title "+e.title+" access should be a function"),e.links&&(n.isArray(e.links,"pipSideNavProvider.sections or pipSideNav.sections: in section number "+i+" with title "+e.title+" links should be an array"),_.each(e.links,function(t){t.access&&n.isFunction(t.access,"pipSideNavProvider.sections or pipSideNav.sections: in section number "+i+" with title "+e.title+" in link with title "+t.title+" access should be a function")}))})}function a(n){return e.enabled()&&t(n),_.isArray(n)&&(o.sections=n),o.sections}var o={theme:"blue",sections:[]};this.theme=i,this.sections=a,this.$get=["$rootScope","$mdSidenav",function(n,e){function t(){return o}function c(n){return i(n),r(),o.theme}function s(n){return a(n),r(),o.sections}function r(){n.$broadcast("pipSideNavChanged",o)}function l(n){e("pip-sidenav").open()}function d(n){e("pip-sidenav").close()}function p(){e("pip-sidenav").toggle()}return n.$on("pipSideNavOpen",l),n.$on("pipSideNavClose",d),{config:t,theme:c,sections:s,open:l,close:d,toggle:p}}]}])}();