@doyourjob/gravity-ui-page-constructor-addons 2.1.33 → 2.1.35

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.
Files changed (77) hide show
  1. package/build/cjs/components/NewHeader/NewHeader.css +3 -6
  2. package/build/cjs/components/NewHeader/NewHeader.js +6 -5
  3. package/build/cjs/components/NewHeader/components/NHBanner/NHBanner.css +42 -0
  4. package/build/cjs/components/NewHeader/components/NHBanner/NHBanner.d.ts +3 -0
  5. package/build/cjs/components/NewHeader/components/NHBanner/NHBanner.js +17 -0
  6. package/build/cjs/components/NewHeader/components/NHDefaultPopup/NHDefaultPopup.css +38 -88
  7. package/build/cjs/components/NewHeader/components/NHDefaultPopup/NHDefaultPopup.js +28 -33
  8. package/build/cjs/components/NewHeader/components/NHEventCard/NHEventCard.css +48 -0
  9. package/build/cjs/components/NewHeader/components/NHEventCard/NHEventCard.d.ts +3 -0
  10. package/build/cjs/components/NewHeader/components/NHEventCard/NHEventCard.js +15 -0
  11. package/build/cjs/components/NewHeader/components/NHLogo/NHLogo.css +4 -0
  12. package/build/cjs/components/NewHeader/components/NHLogo/NHLogo.d.ts +6 -0
  13. package/build/cjs/components/NewHeader/components/NHLogo/NHLogo.js +12 -0
  14. package/build/cjs/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.css +43 -8
  15. package/build/cjs/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.d.ts +4 -3
  16. package/build/cjs/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.js +19 -12
  17. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.css +41 -40
  18. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.d.ts +6 -2
  19. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.js +15 -11
  20. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.css +56 -0
  21. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.d.ts +5 -0
  22. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.js +32 -0
  23. package/build/cjs/components/NewHeader/components/NHMobileNavigationPopup/NHMobileNavigationPopup.css +11 -30
  24. package/build/cjs/components/NewHeader/components/NHMobileNavigationPopup/NHMobileNavigationPopup.js +1 -5
  25. package/build/cjs/components/NewHeader/components/NHNavigation/NHNavigation.js +1 -4
  26. package/build/cjs/components/NewHeader/components/NHNavigationItem/NHNavigationItem.js +2 -2
  27. package/build/cjs/components/NewHeader/components/NHPopupItem/NHPopupItem.css +15 -1
  28. package/build/cjs/components/NewHeader/components/NHStock/NHStock.css +47 -0
  29. package/build/cjs/components/NewHeader/components/NHStock/NHStock.d.ts +3 -0
  30. package/build/cjs/components/NewHeader/components/NHStock/NHStock.js +21 -0
  31. package/build/cjs/components/NewHeader/components/NHStoryCard/NHStoryCard.css +42 -0
  32. package/build/cjs/components/NewHeader/components/NHStoryCard/NHStoryCard.d.ts +3 -0
  33. package/build/cjs/components/NewHeader/components/NHStoryCard/NHStoryCard.js +14 -0
  34. package/build/cjs/components/NewHeader/models.d.ts +9 -43
  35. package/build/cjs/components/NewHeader/models.js +0 -1
  36. package/build/esm/components/NewHeader/NewHeader.css +3 -6
  37. package/build/esm/components/NewHeader/NewHeader.js +7 -6
  38. package/build/esm/components/NewHeader/components/NHBanner/NHBanner.css +42 -0
  39. package/build/esm/components/NewHeader/components/NHBanner/NHBanner.d.ts +4 -0
  40. package/build/esm/components/NewHeader/components/NHBanner/NHBanner.js +13 -0
  41. package/build/esm/components/NewHeader/components/NHDefaultPopup/NHDefaultPopup.css +38 -88
  42. package/build/esm/components/NewHeader/components/NHDefaultPopup/NHDefaultPopup.js +27 -32
  43. package/build/esm/components/NewHeader/components/NHEventCard/NHEventCard.css +48 -0
  44. package/build/esm/components/NewHeader/components/NHEventCard/NHEventCard.d.ts +4 -0
  45. package/build/esm/components/NewHeader/components/NHEventCard/NHEventCard.js +11 -0
  46. package/build/esm/components/NewHeader/components/NHLogo/NHLogo.css +4 -0
  47. package/build/esm/components/NewHeader/components/NHLogo/NHLogo.d.ts +7 -0
  48. package/build/esm/components/NewHeader/components/NHLogo/NHLogo.js +8 -0
  49. package/build/esm/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.css +43 -8
  50. package/build/esm/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.d.ts +4 -3
  51. package/build/esm/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.js +19 -12
  52. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.css +41 -40
  53. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.d.ts +6 -2
  54. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.js +15 -11
  55. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.css +56 -0
  56. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.d.ts +6 -0
  57. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.js +28 -0
  58. package/build/esm/components/NewHeader/components/NHMobileNavigationPopup/NHMobileNavigationPopup.css +11 -30
  59. package/build/esm/components/NewHeader/components/NHMobileNavigationPopup/NHMobileNavigationPopup.js +1 -5
  60. package/build/esm/components/NewHeader/components/NHNavigation/NHNavigation.js +1 -4
  61. package/build/esm/components/NewHeader/components/NHNavigationItem/NHNavigationItem.js +2 -2
  62. package/build/esm/components/NewHeader/components/NHPopupItem/NHPopupItem.css +15 -1
  63. package/build/esm/components/NewHeader/components/NHStock/NHStock.css +47 -0
  64. package/build/esm/components/NewHeader/components/NHStock/NHStock.d.ts +4 -0
  65. package/build/esm/components/NewHeader/components/NHStock/NHStock.js +17 -0
  66. package/build/esm/components/NewHeader/components/NHStoryCard/NHStoryCard.css +42 -0
  67. package/build/esm/components/NewHeader/components/NHStoryCard/NHStoryCard.d.ts +4 -0
  68. package/build/esm/components/NewHeader/components/NHStoryCard/NHStoryCard.js +10 -0
  69. package/build/esm/components/NewHeader/models.d.ts +9 -43
  70. package/build/esm/components/NewHeader/models.js +0 -1
  71. package/package.json +1 -1
  72. package/build/cjs/components/NewHeader/components/NHProductsPopup/NHProductsPopup.css +0 -118
  73. package/build/cjs/components/NewHeader/components/NHProductsPopup/NHProductsPopup.d.ts +0 -3
  74. package/build/cjs/components/NewHeader/components/NHProductsPopup/NHProductsPopup.js +0 -43
  75. package/build/esm/components/NewHeader/components/NHProductsPopup/NHProductsPopup.css +0 -118
  76. package/build/esm/components/NewHeader/components/NHProductsPopup/NHProductsPopup.d.ts +0 -4
  77. package/build/esm/components/NewHeader/components/NHProductsPopup/NHProductsPopup.js +0 -39
@@ -5,7 +5,9 @@ unpredictable css rules order in build */
5
5
  --g-color-scroll-handle: var(--g-color-base-generic);
6
6
  --g-color-scroll-handle-hover: var(--g-color-line-generic);
7
7
  width: 100%;
8
- z-index: 100;
8
+ position: sticky;
9
+ top: 0;
10
+ z-index: 1001;
9
11
  background: var(--pc-transparent);
10
12
  }
11
13
 
@@ -137,11 +139,6 @@ unpredictable css rules order in build */
137
139
  box-shadow: 0 3px 10px var(--g-color-base-generic-hover);
138
140
  }
139
141
 
140
- .pc-addons-new-header__logo-img {
141
- display: block;
142
- height: 36px;
143
- }
144
-
145
142
  .pc-addons-new-header_search .pc-addons-new-header__left,
146
143
  .pc-addons-new-header_search .pc-addons-new-header__navigation,
147
144
  .pc-addons-new-header_search .pc-addons-new-header__wrap > div:not(.pc-addons-new-header__icons-container) {
@@ -6,13 +6,14 @@ const react_1 = tslib_1.__importStar(require("react"));
6
6
  const gravity_ui_page_constructor_1 = require("@doyourjob/gravity-ui-page-constructor");
7
7
  const cn_1 = require("../../utils/cn");
8
8
  const NHLoginButton_1 = require("./components/NHLoginButton/NHLoginButton");
9
+ const NHLogo_1 = require("./components/NHLogo/NHLogo");
9
10
  const NHMobileNavigation_1 = require("./components/NHMobileNavigation/NHMobileNavigation");
10
11
  const NHNavigation_1 = require("./components/NHNavigation/NHNavigation");
11
12
  const route_change_1 = require("./contexts/route-change");
12
13
  const b = (0, cn_1.block)('new-header');
13
14
  exports.MOBILE_ICON_SIZE = 24;
14
15
  const NewHeader = ({ data, setupRouteChangeHandler, renderSearch, className, scrollOffset = 0, }) => {
15
- const { logo, buttons, left, right, mobile, login } = data;
16
+ const { logo, buttons, left, right, login } = data;
16
17
  const headerRef = (0, react_1.useRef)(null);
17
18
  const [withBackground, setWithBackground] = (0, react_1.useState)(false);
18
19
  const [isSearchMode, setIsSearchMode] = (0, react_1.useState)(false);
@@ -51,11 +52,11 @@ const NewHeader = ({ data, setupRouteChangeHandler, renderSearch, className, scr
51
52
  return (react_1.default.createElement(route_change_1.RouteChangeHandlerContext.Provider, { value: setupRouteChangeHandler },
52
53
  react_1.default.createElement("header", { className: b({
53
54
  search: isSearchMode,
54
- 'with-background': withBackground,
55
+ 'with-background': withBackground || isMobileNavigationOpen,
55
56
  }, className), ref: headerRef },
56
57
  react_1.default.createElement("div", { className: b('container') },
57
58
  react_1.default.createElement("div", { className: b('left') },
58
- logo && (react_1.default.createElement("a", Object.assign({ href: logo.href, className: b('logo') }, (0, gravity_ui_page_constructor_1.getLinkProps)(logo.href || '')), logo.src && (react_1.default.createElement("img", { className: b('logo-img'), alt: logo.alt, src: logo.src })))),
59
+ logo && react_1.default.createElement(NHLogo_1.NHLogo, { data: logo }),
59
60
  left ? (react_1.default.createElement("div", { className: b('navigation') },
60
61
  react_1.default.createElement(NHNavigation_1.NHNavigation, { data: left, headerRef: headerRef }))) : null),
61
62
  react_1.default.createElement("div", { className: b('right') },
@@ -65,8 +66,8 @@ const NewHeader = ({ data, setupRouteChangeHandler, renderSearch, className, scr
65
66
  renderSearch && (react_1.default.createElement("div", { className: b('icons-container') }, renderSearch({ onActiveToggle: toggleSearch }))),
66
67
  react_1.default.createElement("div", { className: b('buttons') },
67
68
  showButtonsContainer &&
68
- (buttons === null || buttons === void 0 ? void 0 : buttons.map((button) => (react_1.default.createElement(gravity_ui_page_constructor_1.Button, Object.assign({}, button, { className: b('button'), size: "l", key: button.text }))))),
69
+ (buttons === null || buttons === void 0 ? void 0 : buttons.map((button, index) => (react_1.default.createElement(gravity_ui_page_constructor_1.Button, Object.assign({}, button, { className: b('button'), size: "l", key: index }))))),
69
70
  login && react_1.default.createElement(NHLoginButton_1.NHLoginButton, { data: login, headerRef: headerRef })),
70
- mobile ? (react_1.default.createElement(NHMobileNavigation_1.NHMobileNavigation, { toogleOpen: toggleMobileNavigationPopup, isOpened: isMobileNavigationOpen, isSearchOpen: isSearchMode, data: mobile, buttons: buttons, onMenuScroll: onMenuScroll, popupClassName: b('user-popup') })) : null))))));
71
+ react_1.default.createElement(NHMobileNavigation_1.NHMobileNavigation, { toogleOpen: toggleMobileNavigationPopup, isOpened: isMobileNavigationOpen, isSearchOpen: isSearchMode, data: data, onMenuScroll: onMenuScroll, popupClassName: b('user-popup') })))))));
71
72
  };
72
73
  exports.NewHeader = NewHeader;
@@ -0,0 +1,42 @@
1
+ /* use this for style redefinitions to awoid problems with
2
+ unpredictable css rules order in build */
3
+ .pc-addons-nh-banner {
4
+ color: inherit;
5
+ text-decoration: none;
6
+ grid-area: 1/3/3/4;
7
+ border-radius: 16px;
8
+ padding: 16px;
9
+ display: flex;
10
+ gap: 20px;
11
+ background: var(--nh-banner-background, transparent);
12
+ }
13
+
14
+ .pc-addons-nh-banner_border {
15
+ border: 1px solid var(--g-color-line-generic-solid);
16
+ }
17
+
18
+ .pc-addons-nh-banner__wrap {
19
+ display: flex;
20
+ flex-direction: column;
21
+ flex: 1;
22
+ gap: 4px;
23
+ }
24
+
25
+ .pc-addons-nh-banner__title {
26
+ font-size: var(--g-text-body-2-font-size, var(--pc-text-body-2-font-size));
27
+ line-height: var(--g-text-body-2-line-height, var(--pc-text-body-2-line-height));
28
+ color: var(--nh-banner-color, var(--g-color-text-primary));
29
+ font-weight: 600;
30
+ }
31
+
32
+ .pc-addons-nh-banner__description {
33
+ font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
34
+ line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
35
+ color: var(--nh-banner-color, var(--g-color-text-secondary));
36
+ }
37
+
38
+ .pc-addons-nh-banner__image {
39
+ display: block;
40
+ width: 86px;
41
+ aspect-ratio: 1;
42
+ }
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { NHProductBannerData } from '../../models';
3
+ export declare const NHBanner: ({ title, description, image, url, background, color, border, }: NHProductBannerData) => React.JSX.Element;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NHBanner = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const gravity_ui_page_constructor_1 = require("@doyourjob/gravity-ui-page-constructor");
7
+ const cn_1 = require("../../../../utils/cn");
8
+ const b = (0, cn_1.block)('nh-banner');
9
+ const NHBanner = ({ title, description, image, url, background, color, border, }) => {
10
+ const styles = (0, react_1.useMemo)(() => (Object.assign(Object.assign({}, (background ? { '--nh-banner-background': background } : {})), (color ? { '--nh-banner-color': color } : {}))), [background, color]);
11
+ return (react_1.default.createElement("a", Object.assign({ href: url, className: b({ border }), style: styles }, (0, gravity_ui_page_constructor_1.getLinkProps)(url)),
12
+ react_1.default.createElement(gravity_ui_page_constructor_1.Image, { className: b('image'), src: image }),
13
+ react_1.default.createElement("div", { className: b('wrap') },
14
+ react_1.default.createElement("div", { className: b('title') }, title),
15
+ react_1.default.createElement("div", { className: b('description') }, description))));
16
+ };
17
+ exports.NHBanner = NHBanner;
@@ -51,117 +51,67 @@ unpredictable css rules order in build */
51
51
  gap: 24px;
52
52
  }
53
53
 
54
- .pc-addons-nh-default-popup__wrap {
55
- display: grid;
56
- gap: 24px 40px;
57
- align-items: flex-start;
54
+ .pc-addons-nh-default-popup__section_side-head {
55
+ flex-direction: row;
56
+ gap: 0;
58
57
  }
59
58
 
60
- .pc-addons-nh-default-popup__right {
61
- width: 100%;
62
- max-width: 320px;
63
- flex-shrink: 0;
64
- border-left: 1px solid var(--g-color-line-generic-solid);
59
+ .pc-addons-nh-default-popup__section-head {
65
60
  display: flex;
66
61
  flex-direction: column;
67
- padding: 24px 32px;
68
- gap: 20px;
62
+ width: 200px;
63
+ padding-right: 32px;
64
+ flex-shrink: 0;
65
+ gap: 2px;
69
66
  }
70
67
 
71
- .pc-addons-nh-default-popup__cards {
72
- display: flex;
73
- flex-direction: column;
74
- gap: 24px;
68
+ .pc-addons-nh-default-popup__wrap {
69
+ display: grid;
70
+ gap: 24px 40px;
71
+ align-items: flex-start;
75
72
  }
76
73
 
77
- .pc-addons-nh-default-popup__card {
78
- color: inherit;
79
- text-decoration: none;
80
- border-radius: 16px;
81
- display: flex;
82
- flex-direction: column;
83
- gap: 12px;
84
- cursor: pointer;
85
- transition: opacity 0.2s;
74
+ .pc-addons-nh-default-popup__wrap_mode_run {
75
+ grid-template-columns: repeat(12, 1fr);
86
76
  }
87
77
 
88
- .pc-addons-nh-default-popup__card:hover {
89
- opacity: 0.8;
78
+ .pc-addons-nh-default-popup__wrap_mode_run > a {
79
+ grid-column: span 4;
80
+ grid-row: 1;
90
81
  }
91
82
 
92
- .pc-addons-nh-default-popup__card-wrap {
93
- display: flex;
94
- flex-direction: column;
95
- gap: 4px;
83
+ .pc-addons-nh-default-popup__wrap_mode_run > .pc-addons-nh-default-popup__inner-wrap:empty {
84
+ display: none;
96
85
  }
97
86
 
98
- .pc-addons-nh-default-popup__card-caption {
99
- font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
100
- line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
101
- color: var(--g-color-text-secondary);
87
+ .pc-addons-nh-default-popup__wrap_mode_run > a + .pc-addons-nh-default-popup__inner-wrap {
88
+ grid-column: span 8;
102
89
  }
103
90
 
104
- .pc-addons-nh-default-popup__card-title {
105
- font-size: var(--g-text-body-2-font-size, var(--pc-text-body-2-font-size));
106
- line-height: var(--g-text-body-2-line-height, var(--pc-text-body-2-line-height));
107
- color: var(--g-color-text-primary);
108
- font-weight: 600;
91
+ .pc-addons-nh-default-popup__wrap_mode_run > .pc-addons-nh-default-popup__inner-wrap:last-child {
92
+ grid-column: span 12;
109
93
  }
110
94
 
111
- .pc-addons-nh-default-popup__card-description {
112
- font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
113
- line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
114
- color: var(--g-color-text-secondary);
95
+ .pc-addons-nh-default-popup__inner-wrap {
96
+ display: grid;
97
+ gap: 24px 40px;
98
+ align-items: flex-start;
99
+ grid-template-columns: 1fr 1fr 1fr;
115
100
  }
116
101
 
117
- .pc-addons-nh-default-popup__card-image {
118
- display: block;
102
+ .pc-addons-nh-default-popup__right {
119
103
  width: 100%;
120
- aspect-ratio: 16/9;
121
- object-fit: cover;
122
- }
123
-
124
- .pc-addons-nh-default-popup__stock {
125
- position: relative;
126
- padding: 20px;
104
+ max-width: 320px;
105
+ flex-shrink: 0;
106
+ border-left: 1px solid var(--g-color-line-generic-solid);
127
107
  display: flex;
128
108
  flex-direction: column;
129
- min-height: 310px;
130
- border-radius: 8px;
131
- }
132
-
133
- .pc-addons-nh-default-popup__stock-background {
134
- position: absolute;
135
- top: 0;
136
- left: 0;
137
- width: 100%;
138
- height: 100%;
139
- object-fit: cover;
140
- display: block;
141
- }
142
-
143
- .pc-addons-nh-default-popup__stock-title {
144
- font-size: var(--g-text-body-2-font-size, var(--pc-text-body-2-font-size));
145
- line-height: var(--g-text-body-2-line-height, var(--pc-text-body-2-line-height));
146
- color: var(--g-color-text-primary);
147
- font-weight: 600;
148
- z-index: 1;
149
- margin-bottom: 4px;
150
- }
151
-
152
- .pc-addons-nh-default-popup__stock-value {
153
- color: var(--g-color-text-primary);
154
- font-size: 36px;
155
- line-height: 48px;
156
- font-weight: 600;
157
- z-index: 1;
158
- margin-top: auto;
109
+ padding: 24px 32px;
110
+ gap: 20px;
159
111
  }
160
112
 
161
- .pc-addons-nh-default-popup__stock-date {
162
- font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
163
- line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
164
- color: var(--g-color-text-secondary);
165
- z-index: 1;
166
- margin-top: 4px;
113
+ .pc-addons-nh-default-popup__cards {
114
+ display: flex;
115
+ flex-direction: column;
116
+ gap: 24px;
167
117
  }
@@ -3,33 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NHDefaultPopup = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
- const gravity_ui_page_constructor_1 = require("@doyourjob/gravity-ui-page-constructor");
7
6
  const cn_1 = require("../../../../utils/cn");
7
+ const NHBanner_1 = require("../NHBanner/NHBanner");
8
+ const NHEventCard_1 = require("../NHEventCard/NHEventCard");
8
9
  const NHPopupItem_1 = require("../NHPopupItem/NHPopupItem");
10
+ const NHStock_1 = require("../NHStock/NHStock");
11
+ const NHStoryCard_1 = require("../NHStoryCard/NHStoryCard");
9
12
  const b = (0, cn_1.block)('nh-default-popup');
10
- const NHStoryCard = ({ title, description, image, url }) => (react_1.default.createElement("a", Object.assign({ href: url, className: b('card') }, (0, gravity_ui_page_constructor_1.getLinkProps)(url)),
11
- react_1.default.createElement(gravity_ui_page_constructor_1.Image, { className: b('card-image'), src: image }),
12
- react_1.default.createElement("div", { className: b('card-wrap') },
13
- react_1.default.createElement("div", { className: b('card-title') }, title),
14
- react_1.default.createElement("div", { className: b('card-description') }, description))));
15
- const NHEventCard = ({ title, caption, description, image, url }) => (react_1.default.createElement("a", Object.assign({ href: url, className: b('card') }, (0, gravity_ui_page_constructor_1.getLinkProps)(url)),
16
- react_1.default.createElement(gravity_ui_page_constructor_1.Image, { className: b('card-image'), src: image }),
17
- react_1.default.createElement("div", { className: b('card-wrap') },
18
- react_1.default.createElement("div", { className: b('card-caption') }, caption),
19
- react_1.default.createElement("div", { className: b('card-title') }, title),
20
- react_1.default.createElement("div", { className: b('card-description') }, description))));
21
- const NHStock = ({ background }) => {
22
- const data = (0, react_1.useContext)(gravity_ui_page_constructor_1.HeaderStockContext);
23
- if (!data.price)
24
- return null;
25
- return (react_1.default.createElement("div", { className: b('stock') },
26
- background ? (react_1.default.createElement("img", { className: b('stock-background'), src: background, alt: "Stock background" })) : null,
27
- react_1.default.createElement("div", { className: b('stock-title') }, data.price.name),
28
- react_1.default.createElement("div", { className: b('stock-title') }, data.price.percent),
29
- react_1.default.createElement("div", { className: b('stock-value') }, data.price.price),
30
- react_1.default.createElement("div", { className: b('stock-date') }, data.price.update),
31
- react_1.default.createElement("div", { className: b('stock-date') }, data.price.delayed)));
32
- };
33
13
  const NHDefaultPopup = ({ sections, right, maxWidth, primaryColor, primaryColorHover, }) => {
34
14
  const rootStyle = (0, react_1.useMemo)(() => maxWidth
35
15
  ? {
@@ -38,26 +18,41 @@ const NHDefaultPopup = ({ sections, right, maxWidth, primaryColor, primaryColorH
38
18
  }
39
19
  : undefined, [maxWidth]);
40
20
  const wrapsStyle = (0, react_1.useMemo)(() => sections.map((section) => ({
41
- gridTemplateColumns: `repeat(${section.columns || 3}, 1fr)`,
21
+ gridTemplateColumns: section.mode === 'run' ? undefined : `repeat(${section.columns || 3}, 1fr)`,
42
22
  })), [sections]);
43
23
  const cards = (0, react_1.useMemo)(() => {
44
24
  if (right === null || right === void 0 ? void 0 : right.stories) {
45
- return right.stories.map((card, index) => react_1.default.createElement(NHStoryCard, Object.assign({ key: index }, card)));
25
+ return right.stories.map((card, index) => react_1.default.createElement(NHStoryCard_1.NHStoryCard, Object.assign({ key: index }, card)));
46
26
  }
47
27
  if (right === null || right === void 0 ? void 0 : right.events) {
48
- return right.events.map((card, index) => react_1.default.createElement(NHEventCard, Object.assign({ key: index }, card)));
28
+ return right.events.map((card, index) => react_1.default.createElement(NHEventCard_1.NHEventCard, Object.assign({ key: index }, card)));
49
29
  }
50
30
  return null;
51
31
  }, [right]);
32
+ const renderSectionContent = (section, index) => {
33
+ var _a, _b, _c;
34
+ if (section.mode === 'run') {
35
+ return (react_1.default.createElement("div", { className: b('wrap', { mode: 'run' }) },
36
+ ((_a = section.items) === null || _a === void 0 ? void 0 : _a[0]) && react_1.default.createElement(NHPopupItem_1.NHPopupItem, Object.assign({}, section.items[0], { column: true })),
37
+ react_1.default.createElement("div", { className: b('inner-wrap') }, (_b = section.items) === null || _b === void 0 ? void 0 : _b.slice(1, 4).map((item, cardIndex) => (react_1.default.createElement(NHPopupItem_1.NHPopupItem, Object.assign({ key: cardIndex }, item, { column: true }))))),
38
+ react_1.default.createElement("div", { className: b('inner-wrap') }, (_c = section.items) === null || _c === void 0 ? void 0 : _c.slice(4).map((item, cardIndex) => (react_1.default.createElement(NHPopupItem_1.NHPopupItem, Object.assign({ key: cardIndex }, item, { column: true })))))));
39
+ }
40
+ return (react_1.default.createElement("div", { className: b('wrap'), style: wrapsStyle[index] },
41
+ section.items.map((item, idx) => (react_1.default.createElement(NHPopupItem_1.NHPopupItem, Object.assign({ key: idx }, item, { imageColor: primaryColor, imageColorHover: primaryColorHover })))),
42
+ section.mode === 'scale' && section.banner && react_1.default.createElement(NHBanner_1.NHBanner, Object.assign({}, section.banner))));
43
+ };
52
44
  return (react_1.default.createElement("div", { className: b(), style: rootStyle },
53
- react_1.default.createElement("div", { className: b('left') }, sections.map((section, index) => (react_1.default.createElement("div", { key: index, className: b('section') },
54
- section.title || section.subtitle ? (react_1.default.createElement("div", { className: b('head') },
55
- react_1.default.createElement("div", { className: b('title') }, section.title),
56
- react_1.default.createElement("div", { className: b('subtitle') }, section.subtitle))) : null,
57
- react_1.default.createElement("div", { className: b('wrap'), style: wrapsStyle[index] }, section.items.map((item) => (react_1.default.createElement(NHPopupItem_1.NHPopupItem, Object.assign({ key: item.title }, item, { imageColor: primaryColor, imageColorHover: primaryColorHover }))))))))),
45
+ react_1.default.createElement("div", { className: b('left') }, sections.map((section, index) => {
46
+ const hasSideHead = Boolean(section.mode);
47
+ return (react_1.default.createElement("div", { key: index, className: b('section', { 'side-head': hasSideHead }) },
48
+ section.title || section.subtitle ? (react_1.default.createElement("div", { className: b(hasSideHead ? 'section-head' : 'head') },
49
+ react_1.default.createElement("div", { className: b('title') }, section.title),
50
+ react_1.default.createElement("div", { className: b('subtitle') }, section.subtitle))) : null,
51
+ renderSectionContent(section, index)));
52
+ })),
58
53
  right && (react_1.default.createElement("div", { className: b('right') },
59
54
  react_1.default.createElement("div", { className: b('title') }, right.title),
60
55
  cards && react_1.default.createElement("div", { className: b('cards') }, cards),
61
- right.stock && react_1.default.createElement(NHStock, { background: right.stockImage })))));
56
+ right.stock && react_1.default.createElement(NHStock_1.NHStock, Object.assign({}, right.stock))))));
62
57
  };
63
58
  exports.NHDefaultPopup = NHDefaultPopup;
@@ -0,0 +1,48 @@
1
+ /* use this for style redefinitions to awoid problems with
2
+ unpredictable css rules order in build */
3
+ .pc-addons-nh-event-card {
4
+ color: inherit;
5
+ text-decoration: none;
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: 12px;
9
+ cursor: pointer;
10
+ transition: opacity 0.2s;
11
+ }
12
+
13
+ .pc-addons-nh-event-card:hover {
14
+ opacity: 0.8;
15
+ }
16
+
17
+ .pc-addons-nh-event-card__wrap {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: 4px;
21
+ }
22
+
23
+ .pc-addons-nh-event-card__caption {
24
+ font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
25
+ line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
26
+ color: var(--g-color-text-secondary);
27
+ }
28
+
29
+ .pc-addons-nh-event-card__title {
30
+ font-size: var(--g-text-body-2-font-size, var(--pc-text-body-2-font-size));
31
+ line-height: var(--g-text-body-2-line-height, var(--pc-text-body-2-line-height));
32
+ color: var(--g-color-text-primary);
33
+ font-weight: 600;
34
+ }
35
+
36
+ .pc-addons-nh-event-card__description {
37
+ font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
38
+ line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
39
+ color: var(--g-color-text-secondary);
40
+ }
41
+
42
+ .pc-addons-nh-event-card__image {
43
+ display: block;
44
+ width: 100%;
45
+ aspect-ratio: 16/9;
46
+ object-fit: cover;
47
+ border-radius: 16px;
48
+ }
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { NHEventCardData } from '../../models';
3
+ export declare const NHEventCard: ({ title, caption, description, image, url }: NHEventCardData) => React.JSX.Element;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NHEventCard = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const gravity_ui_page_constructor_1 = require("@doyourjob/gravity-ui-page-constructor");
7
+ const cn_1 = require("../../../../utils/cn");
8
+ const b = (0, cn_1.block)('nh-event-card');
9
+ const NHEventCard = ({ title, caption, description, image, url }) => (react_1.default.createElement("a", Object.assign({ href: url, className: b() }, (0, gravity_ui_page_constructor_1.getLinkProps)(url)),
10
+ react_1.default.createElement(gravity_ui_page_constructor_1.Image, { className: b('image'), src: image }),
11
+ react_1.default.createElement("div", { className: b('wrap') },
12
+ react_1.default.createElement("div", { className: b('caption') }, caption),
13
+ react_1.default.createElement("div", { className: b('title') }, title),
14
+ react_1.default.createElement("div", { className: b('description') }, description))));
15
+ exports.NHEventCard = NHEventCard;
@@ -0,0 +1,4 @@
1
+ .pc-addons-nh-logo__img {
2
+ display: block;
3
+ height: 36px;
4
+ }
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { NHLogoData } from '../../models';
3
+ export interface NHLogoProps {
4
+ data: NHLogoData;
5
+ }
6
+ export declare const NHLogo: ({ data }: NHLogoProps) => React.JSX.Element;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NHLogo = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const gravity_ui_page_constructor_1 = require("@doyourjob/gravity-ui-page-constructor");
7
+ const cn_1 = require("../../../../utils/cn");
8
+ const b = (0, cn_1.block)('nh-logo');
9
+ const NHLogo = ({ data }) => {
10
+ return (react_1.default.createElement("a", Object.assign({ href: data.href, className: b() }, (0, gravity_ui_page_constructor_1.getLinkProps)(data.href || '')), data.src && react_1.default.createElement("img", { className: b('img'), alt: data.alt, src: data.src })));
11
+ };
12
+ exports.NHLogo = NHLogo;
@@ -25,21 +25,56 @@ unpredictable css rules order in build */
25
25
  color: var(--g-color-text-complementary);
26
26
  }
27
27
 
28
- .pc-addons-nh-mobile-navigation__icon-icon {
29
- position: relative;
30
- top: 3px;
31
- }
32
-
33
28
  .pc-addons-nh-mobile-navigation__icon_hidden {
34
29
  display: none;
35
30
  }
36
31
 
37
- .pc-addons-nh-mobile-navigation__user {
38
- margin-top: 24px;
32
+ .pc-addons-nh-mobile-navigation__nav {
33
+ display: flex;
34
+ flex-direction: column;
35
+ padding: 12px 16px;
36
+ }
37
+
38
+ .pc-addons-nh-mobile-navigation__list {
39
+ margin: 0;
40
+ padding: 0;
41
+ list-style: none;
42
+ display: flex;
43
+ flex-direction: column;
44
+ border-bottom: 1px solid var(--g-color-line-generic);
45
+ }
46
+
47
+ .pc-addons-nh-mobile-navigation__list > li + li {
48
+ border-top: 1px solid var(--g-color-line-generic);
49
+ }
50
+
51
+ .pc-addons-nh-mobile-navigation__list + .pc-addons-nh-mobile-navigation__list {
52
+ margin-top: 150px;
39
53
  }
40
54
 
41
55
  .pc-addons-nh-mobile-navigation__buttons {
42
- margin-top: 8px;
56
+ display: flex;
57
+ flex-direction: column;
58
+ gap: 16px;
59
+ margin-top: 32px;
60
+ }
61
+
62
+ .pc-addons-nh-mobile-navigation__button {
63
+ width: 100%;
64
+ }
65
+
66
+ .pc-addons-nh-mobile-navigation__login-items {
67
+ display: flex;
68
+ flex-direction: column;
69
+ margin-top: 32px;
70
+ }
71
+
72
+ .pc-addons-nh-mobile-navigation__login-item {
73
+ padding: 8px 0;
74
+ }
75
+
76
+ .pc-addons-nh-mobile-navigation__login-item + .pc-addons-nh-mobile-navigation__login-item {
77
+ border-top: 1px solid var(--g-color-line-generic);
43
78
  }
44
79
 
45
80
  @media (max-width: 1081px) {
@@ -1,14 +1,15 @@
1
1
  import React from 'react';
2
2
  import type { ButtonProps } from '@doyourjob/gravity-ui-page-constructor';
3
- import { NHMobileNavigationItemData } from '../../models';
3
+ import { NHLoginPopupData, NHNavigationData } from '../../models';
4
4
  interface MobileNavigationProps {
5
5
  isOpened: boolean;
6
6
  toogleOpen: (isOpened: boolean) => void;
7
7
  isSearchOpen: boolean;
8
- data: NHMobileNavigationItemData[];
8
+ data?: NHNavigationData;
9
9
  onMenuScroll: (scrollTop: number) => void;
10
10
  popupClassName?: string;
11
11
  buttons?: ButtonProps[];
12
+ login?: NHLoginPopupData;
12
13
  }
13
- export declare const NHMobileNavigation: ({ isOpened, toogleOpen, isSearchOpen, data, buttons, onMenuScroll, }: MobileNavigationProps) => React.JSX.Element;
14
+ export declare const NHMobileNavigation: ({ isOpened, toogleOpen, isSearchOpen, data, onMenuScroll, }: MobileNavigationProps) => React.JSX.Element;
14
15
  export {};
@@ -9,17 +9,24 @@ const uikit_1 = require("@gravity-ui/uikit");
9
9
  const cn_1 = require("../../../../utils/cn");
10
10
  const NHMobileNavigationItem_1 = require("../NHMobileNavigationItem/NHMobileNavigationItem");
11
11
  const NHMobileNavigationPopup_1 = require("../NHMobileNavigationPopup/NHMobileNavigationPopup");
12
+ const NHPopupItem_1 = require("../NHPopupItem/NHPopupItem");
12
13
  const b = (0, cn_1.block)('nh-mobile-navigation');
13
- const NHMobileNavigation = ({ isOpened, toogleOpen, isSearchOpen, data, buttons, onMenuScroll, }) => (react_1.default.createElement("div", { className: b() },
14
- react_1.default.createElement(uikit_1.Button, { view: "flat", size: "l", className: b('icon', { hidden: isSearchOpen }), onClick: (e) => {
15
- e.stopPropagation();
16
- toogleOpen(!isOpened);
17
- } },
18
- react_1.default.createElement(uikit_1.Icon, { data: isOpened ? icons_1.Xmark : icons_1.Bars, size: 24 })),
19
- react_1.default.createElement(NHMobileNavigationPopup_1.NHMobileNavigationPopup, { isOpened: isOpened, onClose: () => toogleOpen(false), onMenuScroll: onMenuScroll },
20
- react_1.default.createElement("nav", null,
21
- react_1.default.createElement("ul", { className: b() }, data.map((item) => (react_1.default.createElement("li", { className: b(), key: item.title },
22
- react_1.default.createElement(NHMobileNavigationItem_1.NHMobileNavigationItem, Object.assign({}, item)))))),
23
- buttons &&
24
- (buttons === null || buttons === void 0 ? void 0 : buttons.map((button) => react_1.default.createElement(gravity_ui_page_constructor_1.Button, Object.assign({}, button, { size: "l", key: button.text }))))))));
14
+ const NHMobileNavigation = ({ isOpened, toogleOpen, isSearchOpen, data, onMenuScroll, }) => {
15
+ var _a, _b;
16
+ return (react_1.default.createElement("div", { className: b() },
17
+ react_1.default.createElement(uikit_1.Button, { view: "flat", size: "l", className: b('icon', { hidden: isSearchOpen }), onClick: (e) => {
18
+ e.stopPropagation();
19
+ toogleOpen(!isOpened);
20
+ } },
21
+ react_1.default.createElement(uikit_1.Icon, { data: isOpened ? icons_1.Xmark : icons_1.Bars, size: 24 })),
22
+ react_1.default.createElement(NHMobileNavigationPopup_1.NHMobileNavigationPopup, { isOpened: isOpened, onClose: () => toogleOpen(false), onMenuScroll: onMenuScroll },
23
+ react_1.default.createElement("nav", { className: b('nav') },
24
+ react_1.default.createElement("ul", { className: b('list') }, (_a = data === null || data === void 0 ? void 0 : data.left) === null || _a === void 0 ? void 0 : _a.map((item, index) => (react_1.default.createElement("li", { className: b('item'), key: index },
25
+ react_1.default.createElement(NHMobileNavigationItem_1.NHMobileNavigationItem, { item: item }))))),
26
+ react_1.default.createElement("ul", { className: b('list') }, (_b = data === null || data === void 0 ? void 0 : data.right) === null || _b === void 0 ? void 0 : _b.map((item, index) => (react_1.default.createElement("li", { className: b('item'), key: index },
27
+ react_1.default.createElement(NHMobileNavigationItem_1.NHMobileNavigationItem, { item: item }))))),
28
+ (data === null || data === void 0 ? void 0 : data.buttons) && (react_1.default.createElement("div", { className: b('buttons') }, data.buttons.map((button, index) => (react_1.default.createElement(gravity_ui_page_constructor_1.Button, Object.assign({}, button, { size: "l", key: index, className: b('button') })))))),
29
+ (data === null || data === void 0 ? void 0 : data.login) && (react_1.default.createElement("div", { className: b('login-items') }, data.login.items.map((item, index) => (react_1.default.createElement("div", { key: index, className: b('login-item') },
30
+ react_1.default.createElement(NHPopupItem_1.NHPopupItem, Object.assign({}, item)))))))))));
31
+ };
25
32
  exports.NHMobileNavigation = NHMobileNavigation;