myrtex-widget-site-header 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/esm2020/lib/models/header-widget.model.mjs +38 -0
- package/esm2020/lib/myrtex-widget-site-header.component.mjs +163 -0
- package/esm2020/lib/myrtex-widget-site-header.module.mjs +31 -0
- package/esm2020/myrtex-widget-site-header.mjs +5 -0
- package/esm2020/public-api.mjs +6 -0
- package/fesm2015/myrtex-widget-site-header.mjs +243 -0
- package/fesm2015/myrtex-widget-site-header.mjs.map +1 -0
- package/fesm2020/myrtex-widget-site-header.mjs +239 -0
- package/fesm2020/myrtex-widget-site-header.mjs.map +1 -0
- package/lib/models/header-widget.model.d.ts +133 -0
- package/lib/myrtex-widget-site-header.component.d.ts +24 -0
- package/lib/myrtex-widget-site-header.module.d.ts +10 -0
- package/myrtex-widget-site-header.d.ts +5 -0
- package/package.json +31 -0
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Component, Input, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { createCustomElement } from '@angular/elements';
|
|
6
|
+
|
|
7
|
+
var SharedMenuOptionsTypeEnum;
|
|
8
|
+
(function (SharedMenuOptionsTypeEnum) {
|
|
9
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["PersonalInfo"] = 1] = "PersonalInfo";
|
|
10
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["Application"] = 2] = "Application";
|
|
11
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["Setting"] = 3] = "Setting";
|
|
12
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["AdminPanel"] = 4] = "AdminPanel";
|
|
13
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["Tenant"] = 5] = "Tenant";
|
|
14
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["Organization"] = 6] = "Organization";
|
|
15
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["Assistants"] = 7] = "Assistants";
|
|
16
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["ExpertProfile"] = 8] = "ExpertProfile";
|
|
17
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["ExpertQuality"] = 9] = "ExpertQuality";
|
|
18
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["Expertise"] = 10] = "Expertise";
|
|
19
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["DocumentsActs"] = 11] = "DocumentsActs";
|
|
20
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["ExpertReady"] = 13] = "ExpertReady";
|
|
21
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["ProblemReportToBank"] = 14] = "ProblemReportToBank";
|
|
22
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["Dialogs"] = 15] = "Dialogs";
|
|
23
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["MySites"] = 16] = "MySites";
|
|
24
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["CoFinance"] = 17] = "CoFinance";
|
|
25
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["Chat"] = 18] = "Chat";
|
|
26
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["AgreementDocuments"] = 19] = "AgreementDocuments";
|
|
27
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["AutomaticCheck"] = 20] = "AutomaticCheck";
|
|
28
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["Tours"] = 21] = "Tours";
|
|
29
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["OrganizationBCP"] = 22] = "OrganizationBCP";
|
|
30
|
+
SharedMenuOptionsTypeEnum[SharedMenuOptionsTypeEnum["Programs"] = 23] = "Programs";
|
|
31
|
+
})(SharedMenuOptionsTypeEnum || (SharedMenuOptionsTypeEnum = {}));
|
|
32
|
+
var SocialLinkTypeEnum;
|
|
33
|
+
(function (SocialLinkTypeEnum) {
|
|
34
|
+
SocialLinkTypeEnum[SocialLinkTypeEnum["VK"] = 0] = "VK";
|
|
35
|
+
SocialLinkTypeEnum[SocialLinkTypeEnum["FB"] = 1] = "FB";
|
|
36
|
+
SocialLinkTypeEnum[SocialLinkTypeEnum["YT"] = 2] = "YT";
|
|
37
|
+
SocialLinkTypeEnum[SocialLinkTypeEnum["OK"] = 3] = "OK";
|
|
38
|
+
SocialLinkTypeEnum[SocialLinkTypeEnum["INST"] = 4] = "INST";
|
|
39
|
+
SocialLinkTypeEnum[SocialLinkTypeEnum["TW"] = 5] = "TW";
|
|
40
|
+
SocialLinkTypeEnum[SocialLinkTypeEnum["TG"] = 6] = "TG";
|
|
41
|
+
SocialLinkTypeEnum[SocialLinkTypeEnum["RT"] = 7] = "RT";
|
|
42
|
+
SocialLinkTypeEnum[SocialLinkTypeEnum["MAX"] = 8] = "MAX";
|
|
43
|
+
})(SocialLinkTypeEnum || (SocialLinkTypeEnum = {}));
|
|
44
|
+
|
|
45
|
+
class MyrtexWidgetSiteHeaderComponent {
|
|
46
|
+
constructor() {
|
|
47
|
+
this.headerModel = { publicPages: [] };
|
|
48
|
+
}
|
|
49
|
+
set dataHeader(value) {
|
|
50
|
+
this.applyData(value);
|
|
51
|
+
}
|
|
52
|
+
get publicPages() {
|
|
53
|
+
return this.headerModel.publicPages ?? [];
|
|
54
|
+
}
|
|
55
|
+
get platforms() {
|
|
56
|
+
return this.headerModel.platformsJson?.platforms ?? [];
|
|
57
|
+
}
|
|
58
|
+
get userMenuItems() {
|
|
59
|
+
return this.buildUserMenuItems();
|
|
60
|
+
}
|
|
61
|
+
get userRole() {
|
|
62
|
+
return this.headerModel.headerViewRole ?? '';
|
|
63
|
+
}
|
|
64
|
+
get userName() {
|
|
65
|
+
return this.headerModel.userIdentity?.name ?? '';
|
|
66
|
+
}
|
|
67
|
+
get socialLinks() {
|
|
68
|
+
return this.headerModel.socialLinks ?? [];
|
|
69
|
+
}
|
|
70
|
+
get headerPosition() {
|
|
71
|
+
return this.headerModel.headerPosition ?? '';
|
|
72
|
+
}
|
|
73
|
+
getSocialLinkSvgName(type) {
|
|
74
|
+
const svgNameMap = {
|
|
75
|
+
[SocialLinkTypeEnum.VK]: 'vk',
|
|
76
|
+
[SocialLinkTypeEnum.FB]: 'fb',
|
|
77
|
+
[SocialLinkTypeEnum.YT]: 'yt',
|
|
78
|
+
[SocialLinkTypeEnum.OK]: 'ok',
|
|
79
|
+
[SocialLinkTypeEnum.INST]: 'inst',
|
|
80
|
+
[SocialLinkTypeEnum.TW]: 'twitter',
|
|
81
|
+
[SocialLinkTypeEnum.TG]: 'telegram',
|
|
82
|
+
[SocialLinkTypeEnum.RT]: 'rutube',
|
|
83
|
+
[SocialLinkTypeEnum.MAX]: 'max-icon'
|
|
84
|
+
};
|
|
85
|
+
return svgNameMap[type] || '';
|
|
86
|
+
}
|
|
87
|
+
applyData(value) {
|
|
88
|
+
if (value === null || value === undefined) {
|
|
89
|
+
this.headerModel = { publicPages: [] };
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const parsed = typeof value === 'string' ? JSON.parse(value) : value;
|
|
94
|
+
if (parsed && typeof parsed === 'object') {
|
|
95
|
+
const publicPages = Array.isArray(parsed.publicPages)
|
|
96
|
+
? parsed.publicPages
|
|
97
|
+
: [];
|
|
98
|
+
this.headerModel = {
|
|
99
|
+
...parsed,
|
|
100
|
+
publicPages,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this.headerModel = { publicPages: [] };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
this.headerModel = { publicPages: [] };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
buildUserMenuItems() {
|
|
112
|
+
const items = [];
|
|
113
|
+
const sharedMenu = this.headerModel.sharedMenu ?? [];
|
|
114
|
+
const sharedExtensionMenu = this.headerModel.sharedExtensionMenu ?? [];
|
|
115
|
+
//Логика за исключением проверок политик скопирована с AuthNavMenuMenu.cshtml из Rosgrant.Webshared
|
|
116
|
+
const adminPanel = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.AdminPanel);
|
|
117
|
+
if (adminPanel && this.headerModel.showWorkPanel) {
|
|
118
|
+
items.push({
|
|
119
|
+
name: adminPanel.name,
|
|
120
|
+
url: this.headerModel.userAdminUrl || '/user/admin'
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
const expertProfile = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.ExpertProfile);
|
|
124
|
+
const expertise = expertProfile?.subItems?.find(x => x.type === SharedMenuOptionsTypeEnum.Expertise);
|
|
125
|
+
if (expertise && this.headerModel.showExpertises) {
|
|
126
|
+
items.push({
|
|
127
|
+
name: expertise.name,
|
|
128
|
+
url: this.headerModel.userExpertisesUrl || '/user/expertises'
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
const documentsActs = expertProfile?.subItems?.find(x => x.type === SharedMenuOptionsTypeEnum.DocumentsActs);
|
|
132
|
+
if (this.headerModel.canSeeDocs && documentsActs) {
|
|
133
|
+
items.push({
|
|
134
|
+
name: 'Договоры',
|
|
135
|
+
url: this.headerModel.agreementAdminDocumentsUrl || '/agreement/admin/documents'
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else if (this.headerModel.showGrantValidationsInAuthMenu) {
|
|
139
|
+
const validationUrl = this.headerModel.isPg
|
|
140
|
+
? (this.headerModel.grantValidationsPgUrl || '/grant/validations-pg')
|
|
141
|
+
: (this.headerModel.applicationValidationAdminUrl || '/application/validation-admin');
|
|
142
|
+
items.push({
|
|
143
|
+
name: 'Перечень заявок',
|
|
144
|
+
url: validationUrl
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
const personalInfo = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.PersonalInfo);
|
|
148
|
+
if (personalInfo) {
|
|
149
|
+
items.push({
|
|
150
|
+
name: personalInfo.name,
|
|
151
|
+
url: this.headerModel.userProfileUrl || '/user/profile'
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
const dialogs = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.Dialogs);
|
|
155
|
+
if (dialogs) {
|
|
156
|
+
items.push({
|
|
157
|
+
name: dialogs.name || 'Сообщения',
|
|
158
|
+
url: '#',
|
|
159
|
+
isSpecial: true,
|
|
160
|
+
specialId: 'user-chat-auth-info'
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
const application = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.Application);
|
|
164
|
+
if (application) {
|
|
165
|
+
items.push({
|
|
166
|
+
name: application.name,
|
|
167
|
+
url: this.headerModel.userApplicationsUrl || '/application/list'
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
sharedExtensionMenu.forEach(itemExtMenu => {
|
|
171
|
+
if (itemExtMenu.isActive) {
|
|
172
|
+
// Примечание: проверка ExtPolicy должна быть на бэкенде
|
|
173
|
+
// Здесь мы показываем элемент, если он активен
|
|
174
|
+
items.push({
|
|
175
|
+
name: itemExtMenu.extMenuName,
|
|
176
|
+
url: itemExtMenu.extUrl
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
const setting = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.Setting);
|
|
181
|
+
if (setting) {
|
|
182
|
+
items.push({
|
|
183
|
+
name: setting.name,
|
|
184
|
+
url: this.headerModel.identityUserSettingsUrl || '/identity/user/settings'
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
items.push({
|
|
188
|
+
name: this.headerModel.topMenuLogoutText || 'Выйти',
|
|
189
|
+
url: this.headerModel.logoutPath || '/identity/account/logout'
|
|
190
|
+
});
|
|
191
|
+
return items;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
MyrtexWidgetSiteHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MyrtexWidgetSiteHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
195
|
+
MyrtexWidgetSiteHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MyrtexWidgetSiteHeaderComponent, selector: "lib-myrtex-widget-site-header", inputs: { dataHeader: ["data-header", "dataHeader"] }, ngImport: i0, template: "<header class=\"universal-header\"> \r\n <div class=\"universal-header__top\"> \r\n <div class=\"container\"> \r\n <a href=\"/\" class=\"universal-header__top-logo\">\r\n <svg class=\"top-logo__logo\">\r\n <use xlink:href=\"#FPG_logo_black\"></use>\r\n </svg>\r\n </a>\r\n <div class=\"universal-header__top-right\">\r\n <div class=\"universal-header__buttons\">\r\n <button class=\"universal-header__buttons-item\">\r\n <svg class=\"buttons-item__icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#glasses-icon\"></use>\r\n </svg>\r\n \u0412\u0435\u0440\u0441\u0438\u044F \u0434\u043B\u044F \u0441\u043B\u0430\u0431\u043E\u0432\u0438\u0434\u044F\u0449\u0438\u0445\r\n </button>\r\n <button class=\"universal-header__buttons-item\"> \r\n <svg class=\"buttons-item__icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#all-services\"></use>\r\n </svg>\r\n \u0412\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044B\r\n </button>\r\n <div>\r\n <!-- <award-user-menu-injection></award-user-menu-injection> -->\r\n </div>\r\n </div>\r\n <div class=\"universal-header__login\" *ngIf=\"!headerModel.isLoggedIn\">\r\n <a href=\"/identity/account/login\" class=\"universal-header__login-btn\">\u0412\u043E\u0439\u0442\u0438</a> \r\n </div>\r\n <div class=\"universal-header__user\" *ngIf=\"headerModel.isLoggedIn\">\r\n <div class=\"universal-header__user-profile\">\r\n <div class=\"user-profile__avatar\">\r\n <span class=\"mrx-icon icon-user icon-font-40\"></span> \r\n <!-- <img src=\"/\" alt=\"\"> -->\r\n </div>\r\n \r\n <div class=\"user-profile__info\">\r\n <span class=\"user-profile__info-role\">{{ userRole }}</span>\r\n <span class=\"user-profile__info-name\">{{ userName }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"universal-header__user-menu\" id=\"dropdown\">\r\n <ul class=\"user-menu__list\">\r\n <li *ngFor=\"let item of userMenuItems\">\r\n <a *ngIf=\"!item.isSpecial\" [href]=\"item.url\">{{ item.name }}</a>\r\n <div *ngIf=\"item.isSpecial\" [attr.id]=\"item.specialId\" style=\"display:none;\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div> \r\n </div> \r\n </div>\r\n <div class=\"universal-header__services\">\r\n <div class=\"container\"> \r\n <div class=\"universal-header__services-list\">\r\n <a *ngFor=\"let platform of platforms\" [href]=\"platform.link || '#'\" [attr.target]=\"platform.link ? '_blank' : null\">\r\n <svg class=\"services-list__link-icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" [attr.xlink:href]=\"'#' + platform.svg\"></use>\r\n </svg>\r\n <div class=\"services-list__link\">\r\n <div class=\"services-list__link-name\">{{ platform.name }}</div>\r\n </div> \r\n </a>\r\n </div>\r\n <div class=\"universal-header__social\">\r\n <a *ngFor=\"let socialLink of socialLinks\" \r\n class=\"universal-header__social-link\" \r\n [href]=\"socialLink.url || '#'\" \r\n target=\"_blank\">\r\n <svg class=\"universal-header__social-icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" [attr.xlink:href]=\"'#' + getSocialLinkSvgName(socialLink.type)\"></use>\r\n </svg>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"container\">\r\n <nav class=\"universal-header__nav\" [ngClass]=\"headerPosition\">\r\n <ul class=\"universal-header__nav-list\" *ngIf=\"publicPages?.length\">\r\n <li *ngFor=\"let page of publicPages\">\r\n <a [href]=\"page.url || '#'\">{{ page.name }}</a>\r\n </li>\r\n </ul>\r\n </nav> \r\n </div> \r\n</header>\r\n", styles: [".universal-header{background:var(--brand-bg-tertiary-default, #fff);font-size:16px;font-weight:600;line-height:18px;padding:24px 0 32px;z-index:10}.universal-header__top{position:relative;z-index:10}.universal-header__top>.container{display:flex;align-items:center;justify-content:space-between;padding-bottom:16px;border-bottom:1px solid var(--fpg-grey, #f4f2f1)}.universal-header__top-logo{height:44px;max-width:200px;display:flex;align-items:center;overflow:hidden}.universal-header__top-logo svg.top-logo__logo{max-height:44px;max-width:196px}.universal-header__top-right{display:flex;gap:20px}.universal-header__buttons{display:flex;gap:12px}.universal-header__buttons-item{background:var(--fpg-grey, #f4f2f1);border:none;border-radius:8px;display:flex;padding:12px 20px 12px 16px;justify-content:center;align-items:center;gap:8px;cursor:pointer;font-size:16px;font-weight:600;line-height:18px}.universal-header__buttons-item:hover{background:var(--fpg-gold_secondary, #e6d4b6)}.universal-header__buttons-item .buttons-item__icon{max-width:20px;max-height:20px;fill:var(--fpg-black, #282828);transition:all .2s ease-in-out}.universal-header__login-btn{display:flex;height:44px;padding:12px 20px;justify-content:center;align-items:center;gap:8px;color:#fff;border-radius:8px;background:var(--fpg-black, #282828);font-size:16px;font-weight:600;line-height:18px}.universal-header__user{position:relative}.universal-header__user-profile{background:none;border:none;display:flex;align-items:center;gap:12px;cursor:pointer;border-radius:0 0 40px 40px}.universal-header__user-profile .user-profile__avatar{width:40px;height:40px;border-radius:50%}.universal-header__user-profile .user-profile__avatar>*{width:40px;height:40px;border-radius:50%;object-fit:cover}.universal-header__user-profile .user-profile__info{display:flex;flex-direction:column;align-items:start}.universal-header__user-profile .user-profile__info-role{font-size:12px;font-weight:600;line-height:14px;color:var(--fpg-grey_dark, #c3c3c3)}.universal-header__user-profile .user-profile__info-name{font-size:16px;font-weight:600;line-height:18px}.universal-header__user-menu{position:absolute;top:52px;right:0;display:flex;width:221px;flex-direction:column;align-items:flex-start;border-radius:16px;background:#fff;box-shadow:0 4px 40px #181e4c1a;opacity:0;visibility:hidden;transition:all .2s ease;z-index:1000}.universal-header__user-menu .user-menu__list{list-style:none;padding:0;margin:0;width:100%}.universal-header__user-menu .user-menu__list li a{display:block;padding:12px 16px;color:var(--fpg-black, #282828);text-decoration:none;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.universal-header__user-menu .user-menu__list li a .badge{color:#fff;border-radius:50%;padding:0 6px 2px;font-size:12px;font-weight:600;line-height:12px;float:left;margin-left:8px;background:var(--fpg-black, #282828)}.universal-header__user-menu .user-menu__list li:hover{background:var(--fpg-gold_secondary, #e6d4b6)}.universal-header__user-menu .user-menu__list li:first-child{border-radius:16px 16px 0 0}.universal-header__user-menu .user-menu__list li:last-child{border-radius:0 0 16px 16px}.universal-header__user:hover .user-profile__info-name,.universal-header__user:active .user-profile__info-name{color:var(--fpg-gold, #d5ae75)}.universal-header__user:hover .universal-header__user-menu,.universal-header__user:active .universal-header__user-menu{opacity:1;visibility:visible}.universal-header__nav{padding-top:16px;z-index:9}.universal-header__nav-list{display:flex;list-style:none;margin:0;padding:0;gap:32px}.universal-header__nav-list li{position:relative}.universal-header__nav-list li a{color:var(--fpg-black, #282828);text-decoration:none;font-size:16px;font-weight:600;line-height:18px}.universal-header__nav.center .universal-header__nav-list{justify-content:center}.universal-header__nav.right .universal-header__nav-list{justify-content:flex-end}.universal-header__nav.justifybetween .universal-header__nav-list{justify-content:space-between}.universal-header__services{background:var(--brand-bg-tertiary-default, #fff);padding:16px 0 24px;position:absolute;top:100%;left:0;right:0;width:100%;border-radius:0 0 40px 40px;z-index:10}.universal-header__services>.container{display:flex;flex-direction:column;gap:24px;width:100%}.universal-header__services-list{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:8px 12px;gap:8px 12px;list-style:none;padding:0;margin:0}.universal-header__services-list a{border-radius:16px 0;background:var(--brand-bg-tertiary-default, #fff);color:var(--fpg-black, #282828);text-decoration:none;display:flex;padding:12px 44px 12px 12px;align-items:center;gap:8px;align-self:stretch;position:relative;transition:all .2s ease-in-out}.universal-header__services-list a:hover{background-color:var(--fpg-grey, #f4f2f1)}.universal-header__services-list a:hover:after{content:\"\";position:absolute;top:12px;right:12px;width:24px;height:24px;background-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M17.4801%206.51993C17.1872%206.22704%2016.7123%206.22704%2016.4194%206.51993L6.51992%2016.4194C6.22703%2016.7123%206.22703%2017.1872%206.51992%2017.4801C6.81281%2017.773%207.28769%2017.773%207.58058%2017.4801L17.4801%207.58059C17.773%207.2877%2017.773%206.81283%2017.4801%206.51993Z%22%20fill%3D%22%2333373C%22/%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M17.6997%207.05026C17.6997%206.63605%2017.364%206.30026%2016.9497%206.30026L7.05025%206.30026C6.63604%206.30026%206.30025%206.63605%206.30025%207.05026C6.30025%207.46448%206.63604%207.80026%207.05025%207.80026L16.1997%207.80026L16.1997%2016.9498C16.1997%2017.364%2016.5355%2017.6998%2016.9497%2017.6998C17.364%2017.6998%2017.6997%2017.364%2017.6997%2016.9498L17.6997%207.05026Z%22%20fill%3D%22%2333373C%22/%3E%0A%3C/svg%3E%0A);background-repeat:no-repeat;background-position:center center;background-size:contain}.universal-header__services-list .services-list__link-name{font-size:16px;font-weight:600;line-height:18px}.universal-header__services-list .services-list__link-subname{font-size:14px;font-weight:600;line-height:14px;color:var(--fpg-gold, #d5ae75)}.universal-header__services-list .services-list__link-icon{max-width:24px;max-height:24px}.universal-header__social{display:flex;gap:6px;margin-left:12px}.universal-header__social-link{display:flex;padding:8px;align-items:center;border-radius:100px;background:var(--fpg-grey, #f4f2f1)}.universal-header__social-icon{max-width:24px;max-height:24px;fill:var(--fpg-black, #282828);transition:all .2s ease-in-out}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MyrtexWidgetSiteHeaderComponent, decorators: [{
|
|
197
|
+
type: Component,
|
|
198
|
+
args: [{ selector: 'lib-myrtex-widget-site-header', template: "<header class=\"universal-header\"> \r\n <div class=\"universal-header__top\"> \r\n <div class=\"container\"> \r\n <a href=\"/\" class=\"universal-header__top-logo\">\r\n <svg class=\"top-logo__logo\">\r\n <use xlink:href=\"#FPG_logo_black\"></use>\r\n </svg>\r\n </a>\r\n <div class=\"universal-header__top-right\">\r\n <div class=\"universal-header__buttons\">\r\n <button class=\"universal-header__buttons-item\">\r\n <svg class=\"buttons-item__icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#glasses-icon\"></use>\r\n </svg>\r\n \u0412\u0435\u0440\u0441\u0438\u044F \u0434\u043B\u044F \u0441\u043B\u0430\u0431\u043E\u0432\u0438\u0434\u044F\u0449\u0438\u0445\r\n </button>\r\n <button class=\"universal-header__buttons-item\"> \r\n <svg class=\"buttons-item__icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#all-services\"></use>\r\n </svg>\r\n \u0412\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044B\r\n </button>\r\n <div>\r\n <!-- <award-user-menu-injection></award-user-menu-injection> -->\r\n </div>\r\n </div>\r\n <div class=\"universal-header__login\" *ngIf=\"!headerModel.isLoggedIn\">\r\n <a href=\"/identity/account/login\" class=\"universal-header__login-btn\">\u0412\u043E\u0439\u0442\u0438</a> \r\n </div>\r\n <div class=\"universal-header__user\" *ngIf=\"headerModel.isLoggedIn\">\r\n <div class=\"universal-header__user-profile\">\r\n <div class=\"user-profile__avatar\">\r\n <span class=\"mrx-icon icon-user icon-font-40\"></span> \r\n <!-- <img src=\"/\" alt=\"\"> -->\r\n </div>\r\n \r\n <div class=\"user-profile__info\">\r\n <span class=\"user-profile__info-role\">{{ userRole }}</span>\r\n <span class=\"user-profile__info-name\">{{ userName }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"universal-header__user-menu\" id=\"dropdown\">\r\n <ul class=\"user-menu__list\">\r\n <li *ngFor=\"let item of userMenuItems\">\r\n <a *ngIf=\"!item.isSpecial\" [href]=\"item.url\">{{ item.name }}</a>\r\n <div *ngIf=\"item.isSpecial\" [attr.id]=\"item.specialId\" style=\"display:none;\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div> \r\n </div> \r\n </div>\r\n <div class=\"universal-header__services\">\r\n <div class=\"container\"> \r\n <div class=\"universal-header__services-list\">\r\n <a *ngFor=\"let platform of platforms\" [href]=\"platform.link || '#'\" [attr.target]=\"platform.link ? '_blank' : null\">\r\n <svg class=\"services-list__link-icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" [attr.xlink:href]=\"'#' + platform.svg\"></use>\r\n </svg>\r\n <div class=\"services-list__link\">\r\n <div class=\"services-list__link-name\">{{ platform.name }}</div>\r\n </div> \r\n </a>\r\n </div>\r\n <div class=\"universal-header__social\">\r\n <a *ngFor=\"let socialLink of socialLinks\" \r\n class=\"universal-header__social-link\" \r\n [href]=\"socialLink.url || '#'\" \r\n target=\"_blank\">\r\n <svg class=\"universal-header__social-icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" [attr.xlink:href]=\"'#' + getSocialLinkSvgName(socialLink.type)\"></use>\r\n </svg>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"container\">\r\n <nav class=\"universal-header__nav\" [ngClass]=\"headerPosition\">\r\n <ul class=\"universal-header__nav-list\" *ngIf=\"publicPages?.length\">\r\n <li *ngFor=\"let page of publicPages\">\r\n <a [href]=\"page.url || '#'\">{{ page.name }}</a>\r\n </li>\r\n </ul>\r\n </nav> \r\n </div> \r\n</header>\r\n", styles: [".universal-header{background:var(--brand-bg-tertiary-default, #fff);font-size:16px;font-weight:600;line-height:18px;padding:24px 0 32px;z-index:10}.universal-header__top{position:relative;z-index:10}.universal-header__top>.container{display:flex;align-items:center;justify-content:space-between;padding-bottom:16px;border-bottom:1px solid var(--fpg-grey, #f4f2f1)}.universal-header__top-logo{height:44px;max-width:200px;display:flex;align-items:center;overflow:hidden}.universal-header__top-logo svg.top-logo__logo{max-height:44px;max-width:196px}.universal-header__top-right{display:flex;gap:20px}.universal-header__buttons{display:flex;gap:12px}.universal-header__buttons-item{background:var(--fpg-grey, #f4f2f1);border:none;border-radius:8px;display:flex;padding:12px 20px 12px 16px;justify-content:center;align-items:center;gap:8px;cursor:pointer;font-size:16px;font-weight:600;line-height:18px}.universal-header__buttons-item:hover{background:var(--fpg-gold_secondary, #e6d4b6)}.universal-header__buttons-item .buttons-item__icon{max-width:20px;max-height:20px;fill:var(--fpg-black, #282828);transition:all .2s ease-in-out}.universal-header__login-btn{display:flex;height:44px;padding:12px 20px;justify-content:center;align-items:center;gap:8px;color:#fff;border-radius:8px;background:var(--fpg-black, #282828);font-size:16px;font-weight:600;line-height:18px}.universal-header__user{position:relative}.universal-header__user-profile{background:none;border:none;display:flex;align-items:center;gap:12px;cursor:pointer;border-radius:0 0 40px 40px}.universal-header__user-profile .user-profile__avatar{width:40px;height:40px;border-radius:50%}.universal-header__user-profile .user-profile__avatar>*{width:40px;height:40px;border-radius:50%;object-fit:cover}.universal-header__user-profile .user-profile__info{display:flex;flex-direction:column;align-items:start}.universal-header__user-profile .user-profile__info-role{font-size:12px;font-weight:600;line-height:14px;color:var(--fpg-grey_dark, #c3c3c3)}.universal-header__user-profile .user-profile__info-name{font-size:16px;font-weight:600;line-height:18px}.universal-header__user-menu{position:absolute;top:52px;right:0;display:flex;width:221px;flex-direction:column;align-items:flex-start;border-radius:16px;background:#fff;box-shadow:0 4px 40px #181e4c1a;opacity:0;visibility:hidden;transition:all .2s ease;z-index:1000}.universal-header__user-menu .user-menu__list{list-style:none;padding:0;margin:0;width:100%}.universal-header__user-menu .user-menu__list li a{display:block;padding:12px 16px;color:var(--fpg-black, #282828);text-decoration:none;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.universal-header__user-menu .user-menu__list li a .badge{color:#fff;border-radius:50%;padding:0 6px 2px;font-size:12px;font-weight:600;line-height:12px;float:left;margin-left:8px;background:var(--fpg-black, #282828)}.universal-header__user-menu .user-menu__list li:hover{background:var(--fpg-gold_secondary, #e6d4b6)}.universal-header__user-menu .user-menu__list li:first-child{border-radius:16px 16px 0 0}.universal-header__user-menu .user-menu__list li:last-child{border-radius:0 0 16px 16px}.universal-header__user:hover .user-profile__info-name,.universal-header__user:active .user-profile__info-name{color:var(--fpg-gold, #d5ae75)}.universal-header__user:hover .universal-header__user-menu,.universal-header__user:active .universal-header__user-menu{opacity:1;visibility:visible}.universal-header__nav{padding-top:16px;z-index:9}.universal-header__nav-list{display:flex;list-style:none;margin:0;padding:0;gap:32px}.universal-header__nav-list li{position:relative}.universal-header__nav-list li a{color:var(--fpg-black, #282828);text-decoration:none;font-size:16px;font-weight:600;line-height:18px}.universal-header__nav.center .universal-header__nav-list{justify-content:center}.universal-header__nav.right .universal-header__nav-list{justify-content:flex-end}.universal-header__nav.justifybetween .universal-header__nav-list{justify-content:space-between}.universal-header__services{background:var(--brand-bg-tertiary-default, #fff);padding:16px 0 24px;position:absolute;top:100%;left:0;right:0;width:100%;border-radius:0 0 40px 40px;z-index:10}.universal-header__services>.container{display:flex;flex-direction:column;gap:24px;width:100%}.universal-header__services-list{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:8px 12px;gap:8px 12px;list-style:none;padding:0;margin:0}.universal-header__services-list a{border-radius:16px 0;background:var(--brand-bg-tertiary-default, #fff);color:var(--fpg-black, #282828);text-decoration:none;display:flex;padding:12px 44px 12px 12px;align-items:center;gap:8px;align-self:stretch;position:relative;transition:all .2s ease-in-out}.universal-header__services-list a:hover{background-color:var(--fpg-grey, #f4f2f1)}.universal-header__services-list a:hover:after{content:\"\";position:absolute;top:12px;right:12px;width:24px;height:24px;background-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M17.4801%206.51993C17.1872%206.22704%2016.7123%206.22704%2016.4194%206.51993L6.51992%2016.4194C6.22703%2016.7123%206.22703%2017.1872%206.51992%2017.4801C6.81281%2017.773%207.28769%2017.773%207.58058%2017.4801L17.4801%207.58059C17.773%207.2877%2017.773%206.81283%2017.4801%206.51993Z%22%20fill%3D%22%2333373C%22/%3E%0A%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M17.6997%207.05026C17.6997%206.63605%2017.364%206.30026%2016.9497%206.30026L7.05025%206.30026C6.63604%206.30026%206.30025%206.63605%206.30025%207.05026C6.30025%207.46448%206.63604%207.80026%207.05025%207.80026L16.1997%207.80026L16.1997%2016.9498C16.1997%2017.364%2016.5355%2017.6998%2016.9497%2017.6998C17.364%2017.6998%2017.6997%2017.364%2017.6997%2016.9498L17.6997%207.05026Z%22%20fill%3D%22%2333373C%22/%3E%0A%3C/svg%3E%0A);background-repeat:no-repeat;background-position:center center;background-size:contain}.universal-header__services-list .services-list__link-name{font-size:16px;font-weight:600;line-height:18px}.universal-header__services-list .services-list__link-subname{font-size:14px;font-weight:600;line-height:14px;color:var(--fpg-gold, #d5ae75)}.universal-header__services-list .services-list__link-icon{max-width:24px;max-height:24px}.universal-header__social{display:flex;gap:6px;margin-left:12px}.universal-header__social-link{display:flex;padding:8px;align-items:center;border-radius:100px;background:var(--fpg-grey, #f4f2f1)}.universal-header__social-icon{max-width:24px;max-height:24px;fill:var(--fpg-black, #282828);transition:all .2s ease-in-out}\n"] }]
|
|
199
|
+
}], propDecorators: { dataHeader: [{
|
|
200
|
+
type: Input,
|
|
201
|
+
args: ['data-header']
|
|
202
|
+
}] } });
|
|
203
|
+
|
|
204
|
+
class MyrtexWidgetSiteHeaderModule {
|
|
205
|
+
static registerCustomComponents(injector) {
|
|
206
|
+
const element = createCustomElement(MyrtexWidgetSiteHeaderComponent, { injector: injector });
|
|
207
|
+
customElements.define("mrx-myrtex-widget-site-header", element);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
MyrtexWidgetSiteHeaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MyrtexWidgetSiteHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
211
|
+
MyrtexWidgetSiteHeaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MyrtexWidgetSiteHeaderModule, declarations: [MyrtexWidgetSiteHeaderComponent], imports: [CommonModule], exports: [MyrtexWidgetSiteHeaderComponent] });
|
|
212
|
+
MyrtexWidgetSiteHeaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MyrtexWidgetSiteHeaderModule, imports: [[
|
|
213
|
+
CommonModule
|
|
214
|
+
]] });
|
|
215
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MyrtexWidgetSiteHeaderModule, decorators: [{
|
|
216
|
+
type: NgModule,
|
|
217
|
+
args: [{
|
|
218
|
+
declarations: [
|
|
219
|
+
MyrtexWidgetSiteHeaderComponent
|
|
220
|
+
],
|
|
221
|
+
imports: [
|
|
222
|
+
CommonModule
|
|
223
|
+
],
|
|
224
|
+
exports: [
|
|
225
|
+
MyrtexWidgetSiteHeaderComponent
|
|
226
|
+
]
|
|
227
|
+
}]
|
|
228
|
+
}] });
|
|
229
|
+
|
|
230
|
+
/*
|
|
231
|
+
* Public API Surface of myrtex-widget-site-header
|
|
232
|
+
*/
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Generated bundle index. Do not edit.
|
|
236
|
+
*/
|
|
237
|
+
|
|
238
|
+
export { MyrtexWidgetSiteHeaderComponent, MyrtexWidgetSiteHeaderModule };
|
|
239
|
+
//# sourceMappingURL=myrtex-widget-site-header.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"myrtex-widget-site-header.mjs","sources":["../../../projects/myrtex-widget-site-header/src/lib/models/header-widget.model.ts","../../../projects/myrtex-widget-site-header/src/lib/myrtex-widget-site-header.component.ts","../../../projects/myrtex-widget-site-header/src/lib/myrtex-widget-site-header.component.html","../../../projects/myrtex-widget-site-header/src/lib/myrtex-widget-site-header.module.ts","../../../projects/myrtex-widget-site-header/src/public-api.ts","../../../projects/myrtex-widget-site-header/src/myrtex-widget-site-header.ts"],"sourcesContent":["export interface HeaderWidgetPublicPage {\r\n name: string;\r\n url: string;\r\n children?: HeaderWidgetPublicPage[];\r\n}\r\n\r\nexport interface HeaderWidgetPlatform {\r\n name: string;\r\n link: string;\r\n svg: string;\r\n}\r\n\r\nexport interface HeaderWidgetPlatformsJson {\r\n headerPlatformsListHead?: string;\r\n footerPlatformsListHead?: string;\r\n platforms?: HeaderWidgetPlatform[];\r\n vseHeaderPlatformsListHead?: string;\r\n vseFooterPlatformsListHead?: string;\r\n isShowVsePlatforms?: boolean;\r\n vsePlatforms?: HeaderWidgetPlatform[];\r\n useFooterWithPlatforms?: boolean;\r\n}\r\n\r\nexport enum SharedMenuOptionsTypeEnum {\r\n PersonalInfo = 1,\r\n Application = 2,\r\n Setting = 3,\r\n AdminPanel = 4,\r\n Tenant = 5,\r\n Organization = 6,\r\n Assistants = 7,\r\n ExpertProfile = 8,\r\n ExpertQuality = 9,\r\n Expertise = 10,\r\n DocumentsActs = 11,\r\n ExpertReady = 13,\r\n ProblemReportToBank = 14,\r\n Dialogs = 15,\r\n MySites = 16,\r\n CoFinance = 17,\r\n Chat = 18,\r\n AgreementDocuments = 19,\r\n AutomaticCheck = 20,\r\n Tours = 21,\r\n OrganizationBCP = 22,\r\n Programs = 23\r\n}\r\n\r\nexport interface HeaderWidgetSharedMenuSubItem {\r\n type: SharedMenuOptionsTypeEnum;\r\n name: string;\r\n url?: string;\r\n cssClassName?: string;\r\n additionalTxt?: string;\r\n}\r\n\r\nexport interface HeaderWidgetSharedMenuItem {\r\n type: SharedMenuOptionsTypeEnum;\r\n name: string;\r\n url?: string;\r\n subItems?: HeaderWidgetSharedMenuSubItem[];\r\n cssClassName?: string;\r\n additionalTxt?: string;\r\n}\r\n\r\nexport interface HeaderWidgetExtensionMenuItem {\r\n extMenuName: string;\r\n extOrder: number;\r\n extPolicy?: string;\r\n extUrl: string;\r\n isActive: boolean;\r\n}\r\n\r\nexport interface HeaderWidgetSystemRole {\r\n role: number; // SystemRolesEnum as number\r\n}\r\n\r\nexport interface HeaderWidgetRole {\r\n name?: string;\r\n sysName?: string;\r\n visible?: boolean;\r\n order?: number;\r\n}\r\n\r\nexport interface HeaderWidgetUserIdentity {\r\n name?: string;\r\n systemRoles?: HeaderWidgetSystemRole[];\r\n roles?: HeaderWidgetRole[];\r\n ppp?: string;\r\n tenantId?: string;\r\n}\r\n\r\nexport enum SocialLinkTypeEnum {\r\n VK = 0,\r\n FB = 1,\r\n YT = 2,\r\n OK = 3,\r\n INST = 4,\r\n TW = 5,\r\n TG = 6,\r\n RT = 7,\r\n MAX = 8\r\n}\r\n\r\nexport interface HeaderWidgetSocialLink {\r\n isLightHeader?: boolean;\r\n type: SocialLinkTypeEnum;\r\n url: string;\r\n}\r\n\r\nexport interface HeaderWidgetModel {\r\n publicPages: HeaderWidgetPublicPage[];\r\n isPg?: boolean;\r\n showVseLink?: boolean;\r\n vseLink?: string;\r\n isHmao?: boolean;\r\n isPortal?: boolean;\r\n userIdentity?: HeaderWidgetUserIdentity;\r\n isLoggedIn?: boolean;\r\n userHasAvatar?: boolean;\r\n isWide?: boolean;\r\n headerPosition?: string;\r\n isLight?: boolean;\r\n topMenuLogoutText?: string;\r\n isShowPlatforms?: boolean;\r\n platformsJson?: HeaderWidgetPlatformsJson;\r\n awardUserMenuEnabled?: boolean;\r\n sharedMenu?: HeaderWidgetSharedMenuItem[];\r\n sharedExtensionMenu?: HeaderWidgetExtensionMenuItem[];\r\n logoutPath?: string;\r\n userAdminUrl?: string;\r\n userExpertisesUrl?: string;\r\n agreementAdminDocumentsUrl?: string;\r\n grantValidationsPgUrl?: string;\r\n applicationValidationAdminUrl?: string;\r\n userProfileUrl?: string;\r\n userApplicationsUrl?: string;\r\n identityUserSettingsUrl?: string;\r\n showGrantValidationsInAuthMenu?: boolean;\r\n showWorkPanel?: boolean;\r\n showExpertises?: boolean;\r\n canSeeDocs?: boolean;\r\n headerViewRole?: string;\r\n socialLinks?: HeaderWidgetSocialLink[];\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { \r\n HeaderWidgetModel, \r\n HeaderWidgetPublicPage, \r\n HeaderWidgetPlatform,\r\n HeaderWidgetSocialLink,\r\n SocialLinkTypeEnum,\r\n SharedMenuOptionsTypeEnum\r\n} from './models/header-widget.model';\r\n\r\nexport interface UserMenuItem {\r\n name: string;\r\n url: string;\r\n isSpecial?: boolean; // для элементов типа Dialogs с id=\"user-chat-auth-info\"\r\n specialId?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-myrtex-widget-site-header',\r\n templateUrl: 'myrtex-widget-site-header.component.html',\r\n styleUrls: ['./myrtex-widget-site-header.component.less']\r\n})\r\nexport class MyrtexWidgetSiteHeaderComponent {\r\n \r\n @Input('data-header')\r\n set dataHeader(value: string | HeaderWidgetModel | null | undefined) {\r\n this.applyData(value);\r\n }\r\n\r\n public headerModel: HeaderWidgetModel = { publicPages: [] };\r\n\r\n public get publicPages(): HeaderWidgetPublicPage[] {\r\n return this.headerModel.publicPages ?? [];\r\n }\r\n\r\n public get platforms(): HeaderWidgetPlatform[] {\r\n return this.headerModel.platformsJson?.platforms ?? [];\r\n }\r\n\r\n public get userMenuItems(): UserMenuItem[] {\r\n return this.buildUserMenuItems();\r\n }\r\n\r\n public get userRole(): string {\r\n return this.headerModel.headerViewRole ?? '';\r\n }\r\n\r\n public get userName(): string {\r\n return this.headerModel.userIdentity?.name ?? '';\r\n }\r\n\r\n public get socialLinks(): HeaderWidgetSocialLink[] {\r\n return this.headerModel.socialLinks ?? [];\r\n }\r\n\r\n public get headerPosition(): string {\r\n return this.headerModel.headerPosition ?? '';\r\n }\r\n\r\n public getSocialLinkSvgName(type: SocialLinkTypeEnum): string {\r\n const svgNameMap: Record<SocialLinkTypeEnum, string> = {\r\n [SocialLinkTypeEnum.VK]: 'vk',\r\n [SocialLinkTypeEnum.FB]: 'fb',\r\n [SocialLinkTypeEnum.YT]: 'yt',\r\n [SocialLinkTypeEnum.OK]: 'ok',\r\n [SocialLinkTypeEnum.INST]: 'inst',\r\n [SocialLinkTypeEnum.TW]: 'twitter',\r\n [SocialLinkTypeEnum.TG]: 'telegram',\r\n [SocialLinkTypeEnum.RT]: 'rutube',\r\n [SocialLinkTypeEnum.MAX]: 'max-icon'\r\n };\r\n return svgNameMap[type] || '';\r\n }\r\n\r\n private applyData(value: string | HeaderWidgetModel | null | undefined): void {\r\n if (value === null || value === undefined) {\r\n this.headerModel = { publicPages: [] };\r\n return;\r\n }\r\n\r\n try {\r\n const parsed = typeof value === 'string' ? JSON.parse(value) : value;\r\n if (parsed && typeof parsed === 'object') {\r\n const publicPages = Array.isArray((parsed as HeaderWidgetModel).publicPages)\r\n ? (parsed as HeaderWidgetModel).publicPages\r\n : [];\r\n\r\n this.headerModel = {\r\n ...parsed,\r\n publicPages,\r\n } as HeaderWidgetModel;\r\n } else {\r\n this.headerModel = { publicPages: [] };\r\n }\r\n } catch (error) {\r\n this.headerModel = { publicPages: [] };\r\n }\r\n }\r\n\r\n private buildUserMenuItems(): UserMenuItem[] {\r\n const items: UserMenuItem[] = [];\r\n const sharedMenu = this.headerModel.sharedMenu ?? [];\r\n const sharedExtensionMenu = this.headerModel.sharedExtensionMenu ?? [];\r\n\r\n //Логика за исключением проверок политик скопирована с AuthNavMenuMenu.cshtml из Rosgrant.Webshared\r\n\r\n const adminPanel = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.AdminPanel);\r\n if (adminPanel && this.headerModel.showWorkPanel) {\r\n items.push({\r\n name: adminPanel.name,\r\n url: this.headerModel.userAdminUrl || '/user/admin'\r\n });\r\n }\r\n\r\n const expertProfile = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.ExpertProfile);\r\n const expertise = expertProfile?.subItems?.find(x => x.type === SharedMenuOptionsTypeEnum.Expertise);\r\n if (expertise && this.headerModel.showExpertises) {\r\n items.push({\r\n name: expertise.name,\r\n url: this.headerModel.userExpertisesUrl || '/user/expertises'\r\n });\r\n }\r\n\r\n const documentsActs = expertProfile?.subItems?.find(x => x.type === SharedMenuOptionsTypeEnum.DocumentsActs);\r\n \r\n if (this.headerModel.canSeeDocs && documentsActs) {\r\n items.push({\r\n name: 'Договоры',\r\n url: this.headerModel.agreementAdminDocumentsUrl || '/agreement/admin/documents'\r\n });\r\n } else if(this.headerModel.showGrantValidationsInAuthMenu) {\r\n const validationUrl = this.headerModel.isPg \r\n ? (this.headerModel.grantValidationsPgUrl || '/grant/validations-pg')\r\n : (this.headerModel.applicationValidationAdminUrl || '/application/validation-admin');\r\n items.push({\r\n name: 'Перечень заявок',\r\n url: validationUrl\r\n });\r\n }\r\n\r\n const personalInfo = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.PersonalInfo);\r\n if (personalInfo) {\r\n items.push({\r\n name: personalInfo.name,\r\n url: this.headerModel.userProfileUrl || '/user/profile'\r\n });\r\n }\r\n\r\n const dialogs = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.Dialogs);\r\n if (dialogs) {\r\n items.push({\r\n name: dialogs.name || 'Сообщения',\r\n url: '#',\r\n isSpecial: true,\r\n specialId: 'user-chat-auth-info'\r\n });\r\n }\r\n\r\n const application = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.Application);\r\n if (application) {\r\n items.push({\r\n name: application.name,\r\n url: this.headerModel.userApplicationsUrl || '/application/list'\r\n });\r\n }\r\n\r\n sharedExtensionMenu.forEach(itemExtMenu => {\r\n if (itemExtMenu.isActive) {\r\n // Примечание: проверка ExtPolicy должна быть на бэкенде\r\n // Здесь мы показываем элемент, если он активен\r\n items.push({\r\n name: itemExtMenu.extMenuName,\r\n url: itemExtMenu.extUrl\r\n });\r\n }\r\n });\r\n\r\n const setting = sharedMenu.find(x => x.type === SharedMenuOptionsTypeEnum.Setting);\r\n if (setting) {\r\n items.push({\r\n name: setting.name,\r\n url: this.headerModel.identityUserSettingsUrl || '/identity/user/settings'\r\n });\r\n }\r\n\r\n items.push({\r\n name: this.headerModel.topMenuLogoutText || 'Выйти',\r\n url: this.headerModel.logoutPath || '/identity/account/logout'\r\n });\r\n\r\n return items;\r\n }\r\n}\r\n\r\n","<header class=\"universal-header\"> \r\n <div class=\"universal-header__top\"> \r\n <div class=\"container\"> \r\n <a href=\"/\" class=\"universal-header__top-logo\">\r\n <svg class=\"top-logo__logo\">\r\n <use xlink:href=\"#FPG_logo_black\"></use>\r\n </svg>\r\n </a>\r\n <div class=\"universal-header__top-right\">\r\n <div class=\"universal-header__buttons\">\r\n <button class=\"universal-header__buttons-item\">\r\n <svg class=\"buttons-item__icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#glasses-icon\"></use>\r\n </svg>\r\n Версия для слабовидящих\r\n </button>\r\n <button class=\"universal-header__buttons-item\"> \r\n <svg class=\"buttons-item__icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#all-services\"></use>\r\n </svg>\r\n Все сервисы\r\n </button>\r\n <div>\r\n <!-- <award-user-menu-injection></award-user-menu-injection> -->\r\n </div>\r\n </div>\r\n <div class=\"universal-header__login\" *ngIf=\"!headerModel.isLoggedIn\">\r\n <a href=\"/identity/account/login\" class=\"universal-header__login-btn\">Войти</a> \r\n </div>\r\n <div class=\"universal-header__user\" *ngIf=\"headerModel.isLoggedIn\">\r\n <div class=\"universal-header__user-profile\">\r\n <div class=\"user-profile__avatar\">\r\n <span class=\"mrx-icon icon-user icon-font-40\"></span> \r\n <!-- <img src=\"/\" alt=\"\"> -->\r\n </div>\r\n \r\n <div class=\"user-profile__info\">\r\n <span class=\"user-profile__info-role\">{{ userRole }}</span>\r\n <span class=\"user-profile__info-name\">{{ userName }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"universal-header__user-menu\" id=\"dropdown\">\r\n <ul class=\"user-menu__list\">\r\n <li *ngFor=\"let item of userMenuItems\">\r\n <a *ngIf=\"!item.isSpecial\" [href]=\"item.url\">{{ item.name }}</a>\r\n <div *ngIf=\"item.isSpecial\" [attr.id]=\"item.specialId\" style=\"display:none;\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div> \r\n </div> \r\n </div>\r\n <div class=\"universal-header__services\">\r\n <div class=\"container\"> \r\n <div class=\"universal-header__services-list\">\r\n <a *ngFor=\"let platform of platforms\" [href]=\"platform.link || '#'\" [attr.target]=\"platform.link ? '_blank' : null\">\r\n <svg class=\"services-list__link-icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" [attr.xlink:href]=\"'#' + platform.svg\"></use>\r\n </svg>\r\n <div class=\"services-list__link\">\r\n <div class=\"services-list__link-name\">{{ platform.name }}</div>\r\n </div> \r\n </a>\r\n </div>\r\n <div class=\"universal-header__social\">\r\n <a *ngFor=\"let socialLink of socialLinks\" \r\n class=\"universal-header__social-link\" \r\n [href]=\"socialLink.url || '#'\" \r\n target=\"_blank\">\r\n <svg class=\"universal-header__social-icon\">\r\n <use xmlns:xlink=\"http://www.w3.org/1999/xlink\" [attr.xlink:href]=\"'#' + getSocialLinkSvgName(socialLink.type)\"></use>\r\n </svg>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"container\">\r\n <nav class=\"universal-header__nav\" [ngClass]=\"headerPosition\">\r\n <ul class=\"universal-header__nav-list\" *ngIf=\"publicPages?.length\">\r\n <li *ngFor=\"let page of publicPages\">\r\n <a [href]=\"page.url || '#'\">{{ page.name }}</a>\r\n </li>\r\n </ul>\r\n </nav> \r\n </div> \r\n</header>\r\n","import { Injector, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MyrtexWidgetSiteHeaderComponent } from './myrtex-widget-site-header.component';\r\nimport { createCustomElement } from '@angular/elements';\r\n\r\n@NgModule({\r\n declarations: [\r\n MyrtexWidgetSiteHeaderComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n MyrtexWidgetSiteHeaderComponent\r\n ]\r\n})\r\nexport class MyrtexWidgetSiteHeaderModule {\r\n public static registerCustomComponents(injector: Injector): void {\r\n const element = createCustomElement(MyrtexWidgetSiteHeaderComponent, { injector: injector });\r\n customElements.define(\"mrx-myrtex-widget-site-header\", element);\r\n }\r\n}\r\n\r\n\r\n","/*\r\n * Public API Surface of myrtex-widget-site-header\r\n */\r\n\r\nexport * from './lib/myrtex-widget-site-header.module';\r\nexport * from './lib/myrtex-widget-site-header.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
export interface HeaderWidgetPublicPage {
|
|
2
|
+
name: string;
|
|
3
|
+
url: string;
|
|
4
|
+
children?: HeaderWidgetPublicPage[];
|
|
5
|
+
}
|
|
6
|
+
export interface HeaderWidgetPlatform {
|
|
7
|
+
name: string;
|
|
8
|
+
link: string;
|
|
9
|
+
svg: string;
|
|
10
|
+
}
|
|
11
|
+
export interface HeaderWidgetPlatformsJson {
|
|
12
|
+
headerPlatformsListHead?: string;
|
|
13
|
+
footerPlatformsListHead?: string;
|
|
14
|
+
platforms?: HeaderWidgetPlatform[];
|
|
15
|
+
vseHeaderPlatformsListHead?: string;
|
|
16
|
+
vseFooterPlatformsListHead?: string;
|
|
17
|
+
isShowVsePlatforms?: boolean;
|
|
18
|
+
vsePlatforms?: HeaderWidgetPlatform[];
|
|
19
|
+
useFooterWithPlatforms?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare enum SharedMenuOptionsTypeEnum {
|
|
22
|
+
PersonalInfo = 1,
|
|
23
|
+
Application = 2,
|
|
24
|
+
Setting = 3,
|
|
25
|
+
AdminPanel = 4,
|
|
26
|
+
Tenant = 5,
|
|
27
|
+
Organization = 6,
|
|
28
|
+
Assistants = 7,
|
|
29
|
+
ExpertProfile = 8,
|
|
30
|
+
ExpertQuality = 9,
|
|
31
|
+
Expertise = 10,
|
|
32
|
+
DocumentsActs = 11,
|
|
33
|
+
ExpertReady = 13,
|
|
34
|
+
ProblemReportToBank = 14,
|
|
35
|
+
Dialogs = 15,
|
|
36
|
+
MySites = 16,
|
|
37
|
+
CoFinance = 17,
|
|
38
|
+
Chat = 18,
|
|
39
|
+
AgreementDocuments = 19,
|
|
40
|
+
AutomaticCheck = 20,
|
|
41
|
+
Tours = 21,
|
|
42
|
+
OrganizationBCP = 22,
|
|
43
|
+
Programs = 23
|
|
44
|
+
}
|
|
45
|
+
export interface HeaderWidgetSharedMenuSubItem {
|
|
46
|
+
type: SharedMenuOptionsTypeEnum;
|
|
47
|
+
name: string;
|
|
48
|
+
url?: string;
|
|
49
|
+
cssClassName?: string;
|
|
50
|
+
additionalTxt?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface HeaderWidgetSharedMenuItem {
|
|
53
|
+
type: SharedMenuOptionsTypeEnum;
|
|
54
|
+
name: string;
|
|
55
|
+
url?: string;
|
|
56
|
+
subItems?: HeaderWidgetSharedMenuSubItem[];
|
|
57
|
+
cssClassName?: string;
|
|
58
|
+
additionalTxt?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface HeaderWidgetExtensionMenuItem {
|
|
61
|
+
extMenuName: string;
|
|
62
|
+
extOrder: number;
|
|
63
|
+
extPolicy?: string;
|
|
64
|
+
extUrl: string;
|
|
65
|
+
isActive: boolean;
|
|
66
|
+
}
|
|
67
|
+
export interface HeaderWidgetSystemRole {
|
|
68
|
+
role: number;
|
|
69
|
+
}
|
|
70
|
+
export interface HeaderWidgetRole {
|
|
71
|
+
name?: string;
|
|
72
|
+
sysName?: string;
|
|
73
|
+
visible?: boolean;
|
|
74
|
+
order?: number;
|
|
75
|
+
}
|
|
76
|
+
export interface HeaderWidgetUserIdentity {
|
|
77
|
+
name?: string;
|
|
78
|
+
systemRoles?: HeaderWidgetSystemRole[];
|
|
79
|
+
roles?: HeaderWidgetRole[];
|
|
80
|
+
ppp?: string;
|
|
81
|
+
tenantId?: string;
|
|
82
|
+
}
|
|
83
|
+
export declare enum SocialLinkTypeEnum {
|
|
84
|
+
VK = 0,
|
|
85
|
+
FB = 1,
|
|
86
|
+
YT = 2,
|
|
87
|
+
OK = 3,
|
|
88
|
+
INST = 4,
|
|
89
|
+
TW = 5,
|
|
90
|
+
TG = 6,
|
|
91
|
+
RT = 7,
|
|
92
|
+
MAX = 8
|
|
93
|
+
}
|
|
94
|
+
export interface HeaderWidgetSocialLink {
|
|
95
|
+
isLightHeader?: boolean;
|
|
96
|
+
type: SocialLinkTypeEnum;
|
|
97
|
+
url: string;
|
|
98
|
+
}
|
|
99
|
+
export interface HeaderWidgetModel {
|
|
100
|
+
publicPages: HeaderWidgetPublicPage[];
|
|
101
|
+
isPg?: boolean;
|
|
102
|
+
showVseLink?: boolean;
|
|
103
|
+
vseLink?: string;
|
|
104
|
+
isHmao?: boolean;
|
|
105
|
+
isPortal?: boolean;
|
|
106
|
+
userIdentity?: HeaderWidgetUserIdentity;
|
|
107
|
+
isLoggedIn?: boolean;
|
|
108
|
+
userHasAvatar?: boolean;
|
|
109
|
+
isWide?: boolean;
|
|
110
|
+
headerPosition?: string;
|
|
111
|
+
isLight?: boolean;
|
|
112
|
+
topMenuLogoutText?: string;
|
|
113
|
+
isShowPlatforms?: boolean;
|
|
114
|
+
platformsJson?: HeaderWidgetPlatformsJson;
|
|
115
|
+
awardUserMenuEnabled?: boolean;
|
|
116
|
+
sharedMenu?: HeaderWidgetSharedMenuItem[];
|
|
117
|
+
sharedExtensionMenu?: HeaderWidgetExtensionMenuItem[];
|
|
118
|
+
logoutPath?: string;
|
|
119
|
+
userAdminUrl?: string;
|
|
120
|
+
userExpertisesUrl?: string;
|
|
121
|
+
agreementAdminDocumentsUrl?: string;
|
|
122
|
+
grantValidationsPgUrl?: string;
|
|
123
|
+
applicationValidationAdminUrl?: string;
|
|
124
|
+
userProfileUrl?: string;
|
|
125
|
+
userApplicationsUrl?: string;
|
|
126
|
+
identityUserSettingsUrl?: string;
|
|
127
|
+
showGrantValidationsInAuthMenu?: boolean;
|
|
128
|
+
showWorkPanel?: boolean;
|
|
129
|
+
showExpertises?: boolean;
|
|
130
|
+
canSeeDocs?: boolean;
|
|
131
|
+
headerViewRole?: string;
|
|
132
|
+
socialLinks?: HeaderWidgetSocialLink[];
|
|
133
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { HeaderWidgetModel, HeaderWidgetPublicPage, HeaderWidgetPlatform, HeaderWidgetSocialLink, SocialLinkTypeEnum } from './models/header-widget.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export interface UserMenuItem {
|
|
4
|
+
name: string;
|
|
5
|
+
url: string;
|
|
6
|
+
isSpecial?: boolean;
|
|
7
|
+
specialId?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class MyrtexWidgetSiteHeaderComponent {
|
|
10
|
+
set dataHeader(value: string | HeaderWidgetModel | null | undefined);
|
|
11
|
+
headerModel: HeaderWidgetModel;
|
|
12
|
+
get publicPages(): HeaderWidgetPublicPage[];
|
|
13
|
+
get platforms(): HeaderWidgetPlatform[];
|
|
14
|
+
get userMenuItems(): UserMenuItem[];
|
|
15
|
+
get userRole(): string;
|
|
16
|
+
get userName(): string;
|
|
17
|
+
get socialLinks(): HeaderWidgetSocialLink[];
|
|
18
|
+
get headerPosition(): string;
|
|
19
|
+
getSocialLinkSvgName(type: SocialLinkTypeEnum): string;
|
|
20
|
+
private applyData;
|
|
21
|
+
private buildUserMenuItems;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MyrtexWidgetSiteHeaderComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MyrtexWidgetSiteHeaderComponent, "lib-myrtex-widget-site-header", never, { "dataHeader": "data-header"; }, {}, never, never>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Injector } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./myrtex-widget-site-header.component";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
export declare class MyrtexWidgetSiteHeaderModule {
|
|
6
|
+
static registerCustomComponents(injector: Injector): void;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MyrtexWidgetSiteHeaderModule, never>;
|
|
8
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<MyrtexWidgetSiteHeaderModule, [typeof i1.MyrtexWidgetSiteHeaderComponent], [typeof i2.CommonModule], [typeof i1.MyrtexWidgetSiteHeaderComponent]>;
|
|
9
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<MyrtexWidgetSiteHeaderModule>;
|
|
10
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "myrtex-widget-site-header",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^13.3.11",
|
|
6
|
+
"@angular/core": "^13.3.11"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.2.0"
|
|
10
|
+
},
|
|
11
|
+
"module": "fesm2015/myrtex-widget-site-header.mjs",
|
|
12
|
+
"es2020": "fesm2020/myrtex-widget-site-header.mjs",
|
|
13
|
+
"esm2020": "esm2020/myrtex-widget-site-header.mjs",
|
|
14
|
+
"fesm2020": "fesm2020/myrtex-widget-site-header.mjs",
|
|
15
|
+
"fesm2015": "fesm2015/myrtex-widget-site-header.mjs",
|
|
16
|
+
"typings": "myrtex-widget-site-header.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
"./package.json": {
|
|
19
|
+
"default": "./package.json"
|
|
20
|
+
},
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./myrtex-widget-site-header.d.ts",
|
|
23
|
+
"esm2020": "./esm2020/myrtex-widget-site-header.mjs",
|
|
24
|
+
"es2020": "./fesm2020/myrtex-widget-site-header.mjs",
|
|
25
|
+
"es2015": "./fesm2015/myrtex-widget-site-header.mjs",
|
|
26
|
+
"node": "./fesm2015/myrtex-widget-site-header.mjs",
|
|
27
|
+
"default": "./fesm2020/myrtex-widget-site-header.mjs"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"sideEffects": false
|
|
31
|
+
}
|
package/public-api.d.ts
ADDED