@alfalab/core-components-navigation-bar 0.1.3 → 0.2.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/Component.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { FC } from 'react';
1
+ /// <reference types="react" />
2
+ import React from 'react';
2
3
  import { NavigationBarProps } from "./types";
3
- declare const NavigationBar: FC<NavigationBarProps>;
4
+ declare const NavigationBar: React.ForwardRefExoticComponent<NavigationBarProps & React.RefAttributes<HTMLDivElement>>;
4
5
  export { NavigationBar };
package/Component.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var React = require('react');
7
+ var mergeRefs = require('react-merge-refs');
7
8
  var cn = require('classnames');
8
9
  var hooks = require('@alfalab/hooks');
9
10
  var components_backArrowAddon_Component = require('./components/back-arrow-addon/Component.js');
@@ -19,6 +20,7 @@ require('@alfalab/icons-glyph/CrossMIcon');
19
20
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
20
21
 
21
22
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
23
+ var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
22
24
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
23
25
 
24
26
  var getDataTestId = function (dataTestId, element) {
@@ -26,11 +28,11 @@ var getDataTestId = function (dataTestId, element) {
26
28
  return dataTestId ? "".concat(dataTestId).concat(elementPart) : undefined;
27
29
  };
28
30
 
29
- var styles = {"header":"navigation-bar__header_1holh","backgroundImage":"navigation-bar__backgroundImage_1holh","mainLine":"navigation-bar__mainLine_1holh","mainLineSticky":"navigation-bar__mainLineSticky_1holh","mainLineWithImageBg":"navigation-bar__mainLineWithImageBg_1holh","content":"navigation-bar__content_1holh","withBothAddons":"navigation-bar__withBothAddons_1holh","withCompactTitle":"navigation-bar__withCompactTitle_1holh","children":"navigation-bar__children_1holh","title":"navigation-bar__title_1holh","contentOnBotDesktop":"navigation-bar__contentOnBotDesktop_1holh","contentOnBotMobile":"navigation-bar__contentOnBotMobile_1holh","subtitle":"navigation-bar__subtitle_1holh","addonsWrapper":"navigation-bar__addonsWrapper_1holh","rightAddons":"navigation-bar__rightAddons_1holh","addon":"navigation-bar__addon_1holh","bottomAddons":"navigation-bar__bottomAddons_1holh","closer":"navigation-bar__closer_1holh","left":"navigation-bar__left_1holh","center":"navigation-bar__center_1holh","trim":"navigation-bar__trim_1holh"};
31
+ var styles = {"header":"navigation-bar__header_1p62k","backgroundImage":"navigation-bar__backgroundImage_1p62k","mainLine":"navigation-bar__mainLine_1p62k","mainLineSticky":"navigation-bar__mainLineSticky_1p62k","mainLineWithImageBg":"navigation-bar__mainLineWithImageBg_1p62k","content":"navigation-bar__content_1p62k","withBothAddons":"navigation-bar__withBothAddons_1p62k","withCompactTitle":"navigation-bar__withCompactTitle_1p62k","children":"navigation-bar__children_1p62k","title":"navigation-bar__title_1p62k","contentOnBotDesktop":"navigation-bar__contentOnBotDesktop_1p62k","contentOnBotMobile":"navigation-bar__contentOnBotMobile_1p62k","subtitle":"navigation-bar__subtitle_1p62k","addonsWrapper":"navigation-bar__addonsWrapper_1p62k","rightAddons":"navigation-bar__rightAddons_1p62k","addon":"navigation-bar__addon_1p62k","bottomAddons":"navigation-bar__bottomAddons_1p62k","closer":"navigation-bar__closer_1p62k","left":"navigation-bar__left_1p62k","center":"navigation-bar__center_1p62k","trim":"navigation-bar__trim_1p62k"};
30
32
  require('./index.css')
31
33
 
32
34
  var ADDONS_HEIGHT = 48;
33
- var NavigationBar = function (_a) {
35
+ var NavigationBar = React.forwardRef(function (_a, ref) {
34
36
  var _b, _c, _d;
35
37
  var addonClassName = _a.addonClassName, className = _a.className, contentClassName = _a.contentClassName, closerClassName = _a.closerClassName, leftAddons = _a.leftAddons, rightAddons = _a.rightAddons, bottomAddons = _a.bottomAddons, bottomAddonsClassName = _a.bottomAddonsClassName, children = _a.children, _e = _a.align, align = _e === void 0 ? 'left' : _e, _f = _a.trim, trim = _f === void 0 ? true : _f, title = _a.title, _g = _a.titleSize, titleSize = _g === void 0 ? 'default' : _g, subtitle = _a.subtitle, hasCloser = _a.hasCloser, hasBackButton = _a.hasBackButton, backButtonClassName = _a.backButtonClassName, dataTestId = _a.dataTestId, imageUrl = _a.imageUrl, closerIcon = _a.closerIcon, onClose = _a.onClose, view = _a.view, scrollableParentRef = _a.scrollableParentRef, sticky = _a.sticky, onBack = _a.onBack;
36
38
  var _h = React.useState(0), scrollTop = _h[0], setScrollTop = _h[1];
@@ -105,8 +107,8 @@ var NavigationBar = function (_a) {
105
107
  var renderContent = function (args) {
106
108
  var _a;
107
109
  if (args === void 0) { args = {}; }
108
- var extraClassName = args.extraClassName, ref = args.ref, style = args.style, hidden = args.hidden;
109
- return (React__default.default.createElement("div", { style: tslib.__assign(tslib.__assign({}, style), { visibility: hidden ? 'hidden' : 'visible' }), ref: ref, className: cn__default.default(styles.content, extraClassName, contentClassName, styles[align], (_a = {},
110
+ var extraClassName = args.extraClassName, wrapperRef = args.wrapperRef, style = args.style, hidden = args.hidden;
111
+ return (React__default.default.createElement("div", { style: tslib.__assign(tslib.__assign({}, style), { visibility: hidden ? 'hidden' : 'visible' }), ref: wrapperRef, className: cn__default.default(styles.content, extraClassName, contentClassName, styles[align], (_a = {},
110
112
  _a[styles.trim] = trim,
111
113
  _a[styles.withCompactTitle] = view === 'mobile' && compactTitle && hasContent,
112
114
  _a)), "aria-hidden": hidden },
@@ -116,8 +118,10 @@ var NavigationBar = function (_a) {
116
118
  };
117
119
  var renderCloser = function () { return (React__default.default.createElement("div", { className: cn__default.default(styles.addon, styles.closer, closerClassName) },
118
120
  React__default.default.createElement(components_closer_Component.Closer, { view: view, icon: closerIcon, dataTestId: getDataTestId(dataTestId, 'closer'), onClose: onClose }))); };
119
- return (React__default.default.createElement("div", { ref: headerRef, className: cn__default.default(styles.header, className, (_b = {}, _b[styles.backgroundImage] = imageUrl, _b)), "data-test-id": getDataTestId(dataTestId), style: tslib.__assign(tslib.__assign({}, (imageUrl && { backgroundImage: "url(".concat(imageUrl, ")") })), (withAnimation &&
120
- bottomContentRef.current && { top: -bottomContentRef.current.scrollHeight })) },
121
+ return (React__default.default.createElement("div", { ref: mergeRefs__default.default([ref, headerRef]), className: cn__default.default(styles.header, className, (_b = {}, _b[styles.backgroundImage] = imageUrl, _b)), "data-test-id": getDataTestId(dataTestId), style: tslib.__assign(tslib.__assign({}, (imageUrl && { backgroundImage: "url(".concat(imageUrl, ")") })), (withAnimation &&
122
+ bottomContentRef.current && {
123
+ top: -bottomContentRef.current.scrollHeight,
124
+ })) },
121
125
  React__default.default.createElement("div", { className: cn__default.default(styles.mainLine, (_c = {},
122
126
  _c[styles.mainLineSticky] = withAnimation,
123
127
  _c[styles.mainLineWithImageBg] = imageUrl,
@@ -143,7 +147,10 @@ var NavigationBar = function (_a) {
143
147
  renderContent({
144
148
  extraClassName: styles.withBothAddons,
145
149
  style: tslib.__assign({ opacity: Math.min(1, (scrollTop - ADDONS_HEIGHT) / ADDONS_HEIGHT) }, (align === 'center'
146
- ? { marginLeft: titleMargin.left, marginRight: titleMargin.right }
150
+ ? {
151
+ marginLeft: titleMargin.left,
152
+ marginRight: titleMargin.right,
153
+ }
147
154
  : null)),
148
155
  }),
149
156
  hasRightPart && (React__default.default.createElement("div", { className: cn__default.default(styles.addonsWrapper, styles.rightAddons), ref: rightAddonsRef },
@@ -151,7 +158,7 @@ var NavigationBar = function (_a) {
151
158
  hasCloser && renderCloser()))),
152
159
  showAnimatedContentOnBot &&
153
160
  renderContent({
154
- ref: bottomContentRef,
161
+ wrapperRef: bottomContentRef,
155
162
  extraClassName: styles.underAddons,
156
163
  style: { opacity: Math.max(0, 1 - scrollTop / ADDONS_HEIGHT) },
157
164
  hidden: scrollTop / ADDONS_HEIGHT > 1,
@@ -164,6 +171,6 @@ var NavigationBar = function (_a) {
164
171
  _d)),
165
172
  }),
166
173
  bottomAddons && (React__default.default.createElement("div", { className: cn__default.default(styles.bottomAddons, bottomAddonsClassName) }, bottomAddons))));
167
- };
174
+ });
168
175
 
169
176
  exports.NavigationBar = NavigationBar;
@@ -15,7 +15,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
15
15
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
16
16
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
17
17
 
18
- var styles = {"component":"navigation-bar__component_65af1","mobileComponent":"navigation-bar__mobileComponent_65af1","flex":"navigation-bar__flex_65af1","iconWrapper":"navigation-bar__iconWrapper_65af1","text":"navigation-bar__text_65af1","mobileWrapper":"navigation-bar__mobileWrapper_65af1"};
18
+ var styles = {"component":"navigation-bar__component_1lkkr","mobileComponent":"navigation-bar__mobileComponent_1lkkr","flex":"navigation-bar__flex_1lkkr","iconWrapper":"navigation-bar__iconWrapper_1lkkr","text":"navigation-bar__text_1lkkr","mobileWrapper":"navigation-bar__mobileWrapper_1lkkr"};
19
19
  require('./index.css')
20
20
 
21
21
  var BackArrowAddon = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 1iw35 */
1
+ /* hash: 7mmij */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-graphic-primary: #0e0e0e;
@@ -24,46 +24,46 @@
24
24
  --gap-s: 12px;
25
25
  } :root {
26
26
  } :root {
27
- } .navigation-bar__component_65af1 {
27
+ } .navigation-bar__component_1lkkr {
28
28
  height: 100%;
29
29
  background: var(--color-light-bg-primary-alpha-40);
30
30
  -webkit-backdrop-filter: blur(10px);
31
31
  backdrop-filter: blur(10px);
32
32
  border-radius: var(--border-radius-pill)
33
- } .navigation-bar__component_65af1 svg > path {
33
+ } .navigation-bar__component_1lkkr svg > path {
34
34
  transition: fill 0.2s ease;
35
35
  fill: var(--color-light-graphic-primary);
36
- } .navigation-bar__component_65af1:hover svg > path {
36
+ } .navigation-bar__component_1lkkr:hover svg > path {
37
37
  fill: var(--color-light-graphic-primary-tint-20);
38
- } .navigation-bar__component_65af1:active svg > path {
38
+ } .navigation-bar__component_1lkkr:active svg > path {
39
39
  fill: var(--color-light-graphic-primary-tint-30);
40
- } .navigation-bar__mobileComponent_65af1 {
40
+ } .navigation-bar__mobileComponent_1lkkr {
41
41
  height: 32px;
42
42
  margin: 0 var(--gap-xs);
43
43
  -webkit-backdrop-filter: none;
44
44
  backdrop-filter: none;
45
45
  background: none;
46
- } .navigation-bar__flex_65af1 {
46
+ } .navigation-bar__flex_1lkkr {
47
47
  display: flex;
48
48
  align-items: center;
49
- } .navigation-bar__iconWrapper_65af1 {
49
+ } .navigation-bar__iconWrapper_1lkkr {
50
50
  display: inline-flex;
51
51
  align-items: center;
52
52
  justify-content: center;
53
53
  height: 48px;
54
54
  margin: 0 var(--gap-xs) 0 var(--gap-s);
55
55
  border-radius: var(--border-radius-circle)
56
- } .navigation-bar__iconWrapper_65af1 + .navigation-bar__text_65af1 {
56
+ } .navigation-bar__iconWrapper_1lkkr + .navigation-bar__text_1lkkr {
57
57
  margin-right: var(--gap-s);
58
- } .navigation-bar__mobileWrapper_65af1 {
58
+ } .navigation-bar__mobileWrapper_1lkkr {
59
59
  width: 32px;
60
60
  height: 32px;
61
61
  background: var(--color-light-specialbg-secondary-transparent);
62
62
  -webkit-backdrop-filter: blur(10px);
63
63
  backdrop-filter: blur(10px);
64
64
  margin: 0
65
- } .navigation-bar__mobileWrapper_65af1 + .navigation-bar__text_65af1 {
65
+ } .navigation-bar__mobileWrapper_1lkkr + .navigation-bar__text_1lkkr {
66
66
  margin: 0 var(--gap-s) 0 var(--gap-xs);
67
- } .navigation-bar__mobileWrapper_65af1 svg > path {
67
+ } .navigation-bar__mobileWrapper_1lkkr svg > path {
68
68
  fill: var(--color-light-graphic-secondary);
69
69
  }
@@ -14,7 +14,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
14
14
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
15
15
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
16
16
 
17
- var styles = {"closer":"navigation-bar__closer_1wm0n","button":"navigation-bar__button_1wm0n","mobile":"navigation-bar__mobile_1wm0n","sticky":"navigation-bar__sticky_1wm0n"};
17
+ var styles = {"closer":"navigation-bar__closer_ylt19","button":"navigation-bar__button_ylt19","mobile":"navigation-bar__mobile_ylt19","sticky":"navigation-bar__sticky_ylt19"};
18
18
  require('./index.css')
19
19
 
20
20
  var Closer = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 1hg1i */
1
+ /* hash: fjemv */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-graphic-primary: #0e0e0e;
@@ -18,7 +18,7 @@
18
18
  } :root {
19
19
  } :root {
20
20
  } :root {
21
- } .navigation-bar__closer_1wm0n {
21
+ } .navigation-bar__closer_ylt19 {
22
22
  flex-shrink: 0;
23
23
  width: 48px;
24
24
  height: 48px;
@@ -26,16 +26,16 @@
26
26
  display: flex;
27
27
  align-items: center;
28
28
  justify-content: center;
29
- } .navigation-bar__button_1wm0n {
29
+ } .navigation-bar__button_ylt19 {
30
30
  background: var(--color-light-bg-primary-alpha-40);
31
31
  -webkit-backdrop-filter: blur(10px);
32
32
  backdrop-filter: blur(10px);
33
33
  border-radius: 50px;
34
34
  color: var(--color-light-graphic-primary)
35
- } .navigation-bar__button_1wm0n.navigation-bar__mobile_1wm0n {
35
+ } .navigation-bar__button_ylt19.navigation-bar__mobile_ylt19 {
36
36
  background: var(--color-light-specialbg-secondary-transparent);
37
37
  color: var(--color-light-graphic-secondary);
38
- } .navigation-bar__sticky_1wm0n {
38
+ } .navigation-bar__sticky_ylt19 {
39
39
  position: sticky;
40
40
  top: 0;
41
41
  }
@@ -1,4 +1,5 @@
1
- import { FC } from 'react';
1
+ /// <reference types="react" />
2
+ import React from 'react';
2
3
  import { NavigationBarProps } from "./types";
3
- declare const NavigationBar: FC<NavigationBarProps>;
4
+ declare const NavigationBar: React.ForwardRefExoticComponent<NavigationBarProps & React.RefAttributes<HTMLDivElement>>;
4
5
  export { NavigationBar };
package/cssm/Component.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var React = require('react');
7
+ var mergeRefs = require('react-merge-refs');
7
8
  var cn = require('classnames');
8
9
  var hooks = require('@alfalab/hooks');
9
10
  var components_backArrowAddon_Component = require('./components/back-arrow-addon/Component.js');
@@ -22,6 +23,7 @@ require('./components/closer/index.module.css');
22
23
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
23
24
 
24
25
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
26
+ var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
25
27
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
26
28
  var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
27
29
 
@@ -31,7 +33,7 @@ var getDataTestId = function (dataTestId, element) {
31
33
  };
32
34
 
33
35
  var ADDONS_HEIGHT = 48;
34
- var NavigationBar = function (_a) {
36
+ var NavigationBar = React.forwardRef(function (_a, ref) {
35
37
  var _b, _c, _d;
36
38
  var addonClassName = _a.addonClassName, className = _a.className, contentClassName = _a.contentClassName, closerClassName = _a.closerClassName, leftAddons = _a.leftAddons, rightAddons = _a.rightAddons, bottomAddons = _a.bottomAddons, bottomAddonsClassName = _a.bottomAddonsClassName, children = _a.children, _e = _a.align, align = _e === void 0 ? 'left' : _e, _f = _a.trim, trim = _f === void 0 ? true : _f, title = _a.title, _g = _a.titleSize, titleSize = _g === void 0 ? 'default' : _g, subtitle = _a.subtitle, hasCloser = _a.hasCloser, hasBackButton = _a.hasBackButton, backButtonClassName = _a.backButtonClassName, dataTestId = _a.dataTestId, imageUrl = _a.imageUrl, closerIcon = _a.closerIcon, onClose = _a.onClose, view = _a.view, scrollableParentRef = _a.scrollableParentRef, sticky = _a.sticky, onBack = _a.onBack;
37
39
  var _h = React.useState(0), scrollTop = _h[0], setScrollTop = _h[1];
@@ -106,8 +108,8 @@ var NavigationBar = function (_a) {
106
108
  var renderContent = function (args) {
107
109
  var _a;
108
110
  if (args === void 0) { args = {}; }
109
- var extraClassName = args.extraClassName, ref = args.ref, style = args.style, hidden = args.hidden;
110
- return (React__default.default.createElement("div", { style: tslib.__assign(tslib.__assign({}, style), { visibility: hidden ? 'hidden' : 'visible' }), ref: ref, className: cn__default.default(styles__default.default.content, extraClassName, contentClassName, styles__default.default[align], (_a = {},
111
+ var extraClassName = args.extraClassName, wrapperRef = args.wrapperRef, style = args.style, hidden = args.hidden;
112
+ return (React__default.default.createElement("div", { style: tslib.__assign(tslib.__assign({}, style), { visibility: hidden ? 'hidden' : 'visible' }), ref: wrapperRef, className: cn__default.default(styles__default.default.content, extraClassName, contentClassName, styles__default.default[align], (_a = {},
111
113
  _a[styles__default.default.trim] = trim,
112
114
  _a[styles__default.default.withCompactTitle] = view === 'mobile' && compactTitle && hasContent,
113
115
  _a)), "aria-hidden": hidden },
@@ -117,8 +119,10 @@ var NavigationBar = function (_a) {
117
119
  };
118
120
  var renderCloser = function () { return (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.addon, styles__default.default.closer, closerClassName) },
119
121
  React__default.default.createElement(components_closer_Component.Closer, { view: view, icon: closerIcon, dataTestId: getDataTestId(dataTestId, 'closer'), onClose: onClose }))); };
120
- return (React__default.default.createElement("div", { ref: headerRef, className: cn__default.default(styles__default.default.header, className, (_b = {}, _b[styles__default.default.backgroundImage] = imageUrl, _b)), "data-test-id": getDataTestId(dataTestId), style: tslib.__assign(tslib.__assign({}, (imageUrl && { backgroundImage: "url(".concat(imageUrl, ")") })), (withAnimation &&
121
- bottomContentRef.current && { top: -bottomContentRef.current.scrollHeight })) },
122
+ return (React__default.default.createElement("div", { ref: mergeRefs__default.default([ref, headerRef]), className: cn__default.default(styles__default.default.header, className, (_b = {}, _b[styles__default.default.backgroundImage] = imageUrl, _b)), "data-test-id": getDataTestId(dataTestId), style: tslib.__assign(tslib.__assign({}, (imageUrl && { backgroundImage: "url(".concat(imageUrl, ")") })), (withAnimation &&
123
+ bottomContentRef.current && {
124
+ top: -bottomContentRef.current.scrollHeight,
125
+ })) },
122
126
  React__default.default.createElement("div", { className: cn__default.default(styles__default.default.mainLine, (_c = {},
123
127
  _c[styles__default.default.mainLineSticky] = withAnimation,
124
128
  _c[styles__default.default.mainLineWithImageBg] = imageUrl,
@@ -144,7 +148,10 @@ var NavigationBar = function (_a) {
144
148
  renderContent({
145
149
  extraClassName: styles__default.default.withBothAddons,
146
150
  style: tslib.__assign({ opacity: Math.min(1, (scrollTop - ADDONS_HEIGHT) / ADDONS_HEIGHT) }, (align === 'center'
147
- ? { marginLeft: titleMargin.left, marginRight: titleMargin.right }
151
+ ? {
152
+ marginLeft: titleMargin.left,
153
+ marginRight: titleMargin.right,
154
+ }
148
155
  : null)),
149
156
  }),
150
157
  hasRightPart && (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.addonsWrapper, styles__default.default.rightAddons), ref: rightAddonsRef },
@@ -152,7 +159,7 @@ var NavigationBar = function (_a) {
152
159
  hasCloser && renderCloser()))),
153
160
  showAnimatedContentOnBot &&
154
161
  renderContent({
155
- ref: bottomContentRef,
162
+ wrapperRef: bottomContentRef,
156
163
  extraClassName: styles__default.default.underAddons,
157
164
  style: { opacity: Math.max(0, 1 - scrollTop / ADDONS_HEIGHT) },
158
165
  hidden: scrollTop / ADDONS_HEIGHT > 1,
@@ -165,6 +172,6 @@ var NavigationBar = function (_a) {
165
172
  _d)),
166
173
  }),
167
174
  bottomAddons && (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.bottomAddons, bottomAddonsClassName) }, bottomAddons))));
168
- };
175
+ });
169
176
 
170
177
  exports.NavigationBar = NavigationBar;
package/cssm/index.js CHANGED
@@ -6,6 +6,7 @@ var Component = require('./Component.js');
6
6
  var components_closer_Component = require('./components/closer/Component.js');
7
7
  require('tslib');
8
8
  require('react');
9
+ require('react-merge-refs');
9
10
  require('classnames');
10
11
  require('@alfalab/hooks');
11
12
  require('./components/back-arrow-addon/Component.js');
package/cssm/types.d.ts CHANGED
@@ -106,7 +106,7 @@ type NavigationBarProps = {
106
106
  };
107
107
  type ContentParams = {
108
108
  extraClassName?: string;
109
- ref?: React.RefObject<HTMLDivElement>;
109
+ wrapperRef?: React.RefObject<HTMLDivElement>;
110
110
  style?: React.CSSProperties;
111
111
  hidden?: boolean;
112
112
  };
@@ -1,4 +1,5 @@
1
- import { FC } from 'react';
1
+ /// <reference types="react" />
2
+ import React from 'react';
2
3
  import { NavigationBarProps } from "./types";
3
- declare const NavigationBar: FC<NavigationBarProps>;
4
+ declare const NavigationBar: React.ForwardRefExoticComponent<NavigationBarProps & React.RefAttributes<HTMLDivElement>>;
4
5
  export { NavigationBar };
package/esm/Component.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { __assign } from 'tslib';
2
- import React, { useState, useRef, useEffect } from 'react';
2
+ import React, { forwardRef, useState, useRef, useEffect } from 'react';
3
+ import mergeRefs from 'react-merge-refs';
3
4
  import cn from 'classnames';
4
5
  import { useLayoutEffect_SAFE_FOR_SSR } from '@alfalab/hooks';
5
6
  import { BackArrowAddon } from './components/back-arrow-addon/Component.js';
@@ -17,11 +18,11 @@ var getDataTestId = function (dataTestId, element) {
17
18
  return dataTestId ? "".concat(dataTestId).concat(elementPart) : undefined;
18
19
  };
19
20
 
20
- var styles = {"header":"navigation-bar__header_1holh","backgroundImage":"navigation-bar__backgroundImage_1holh","mainLine":"navigation-bar__mainLine_1holh","mainLineSticky":"navigation-bar__mainLineSticky_1holh","mainLineWithImageBg":"navigation-bar__mainLineWithImageBg_1holh","content":"navigation-bar__content_1holh","withBothAddons":"navigation-bar__withBothAddons_1holh","withCompactTitle":"navigation-bar__withCompactTitle_1holh","children":"navigation-bar__children_1holh","title":"navigation-bar__title_1holh","contentOnBotDesktop":"navigation-bar__contentOnBotDesktop_1holh","contentOnBotMobile":"navigation-bar__contentOnBotMobile_1holh","subtitle":"navigation-bar__subtitle_1holh","addonsWrapper":"navigation-bar__addonsWrapper_1holh","rightAddons":"navigation-bar__rightAddons_1holh","addon":"navigation-bar__addon_1holh","bottomAddons":"navigation-bar__bottomAddons_1holh","closer":"navigation-bar__closer_1holh","left":"navigation-bar__left_1holh","center":"navigation-bar__center_1holh","trim":"navigation-bar__trim_1holh"};
21
+ var styles = {"header":"navigation-bar__header_1p62k","backgroundImage":"navigation-bar__backgroundImage_1p62k","mainLine":"navigation-bar__mainLine_1p62k","mainLineSticky":"navigation-bar__mainLineSticky_1p62k","mainLineWithImageBg":"navigation-bar__mainLineWithImageBg_1p62k","content":"navigation-bar__content_1p62k","withBothAddons":"navigation-bar__withBothAddons_1p62k","withCompactTitle":"navigation-bar__withCompactTitle_1p62k","children":"navigation-bar__children_1p62k","title":"navigation-bar__title_1p62k","contentOnBotDesktop":"navigation-bar__contentOnBotDesktop_1p62k","contentOnBotMobile":"navigation-bar__contentOnBotMobile_1p62k","subtitle":"navigation-bar__subtitle_1p62k","addonsWrapper":"navigation-bar__addonsWrapper_1p62k","rightAddons":"navigation-bar__rightAddons_1p62k","addon":"navigation-bar__addon_1p62k","bottomAddons":"navigation-bar__bottomAddons_1p62k","closer":"navigation-bar__closer_1p62k","left":"navigation-bar__left_1p62k","center":"navigation-bar__center_1p62k","trim":"navigation-bar__trim_1p62k"};
21
22
  require('./index.css')
22
23
 
23
24
  var ADDONS_HEIGHT = 48;
24
- var NavigationBar = function (_a) {
25
+ var NavigationBar = forwardRef(function (_a, ref) {
25
26
  var _b, _c, _d;
26
27
  var addonClassName = _a.addonClassName, className = _a.className, contentClassName = _a.contentClassName, closerClassName = _a.closerClassName, leftAddons = _a.leftAddons, rightAddons = _a.rightAddons, bottomAddons = _a.bottomAddons, bottomAddonsClassName = _a.bottomAddonsClassName, children = _a.children, _e = _a.align, align = _e === void 0 ? 'left' : _e, _f = _a.trim, trim = _f === void 0 ? true : _f, title = _a.title, _g = _a.titleSize, titleSize = _g === void 0 ? 'default' : _g, subtitle = _a.subtitle, hasCloser = _a.hasCloser, hasBackButton = _a.hasBackButton, backButtonClassName = _a.backButtonClassName, dataTestId = _a.dataTestId, imageUrl = _a.imageUrl, closerIcon = _a.closerIcon, onClose = _a.onClose, view = _a.view, scrollableParentRef = _a.scrollableParentRef, sticky = _a.sticky, onBack = _a.onBack;
27
28
  var _h = useState(0), scrollTop = _h[0], setScrollTop = _h[1];
@@ -96,8 +97,8 @@ var NavigationBar = function (_a) {
96
97
  var renderContent = function (args) {
97
98
  var _a;
98
99
  if (args === void 0) { args = {}; }
99
- var extraClassName = args.extraClassName, ref = args.ref, style = args.style, hidden = args.hidden;
100
- return (React.createElement("div", { style: __assign(__assign({}, style), { visibility: hidden ? 'hidden' : 'visible' }), ref: ref, className: cn(styles.content, extraClassName, contentClassName, styles[align], (_a = {},
100
+ var extraClassName = args.extraClassName, wrapperRef = args.wrapperRef, style = args.style, hidden = args.hidden;
101
+ return (React.createElement("div", { style: __assign(__assign({}, style), { visibility: hidden ? 'hidden' : 'visible' }), ref: wrapperRef, className: cn(styles.content, extraClassName, contentClassName, styles[align], (_a = {},
101
102
  _a[styles.trim] = trim,
102
103
  _a[styles.withCompactTitle] = view === 'mobile' && compactTitle && hasContent,
103
104
  _a)), "aria-hidden": hidden },
@@ -107,8 +108,10 @@ var NavigationBar = function (_a) {
107
108
  };
108
109
  var renderCloser = function () { return (React.createElement("div", { className: cn(styles.addon, styles.closer, closerClassName) },
109
110
  React.createElement(Closer, { view: view, icon: closerIcon, dataTestId: getDataTestId(dataTestId, 'closer'), onClose: onClose }))); };
110
- return (React.createElement("div", { ref: headerRef, className: cn(styles.header, className, (_b = {}, _b[styles.backgroundImage] = imageUrl, _b)), "data-test-id": getDataTestId(dataTestId), style: __assign(__assign({}, (imageUrl && { backgroundImage: "url(".concat(imageUrl, ")") })), (withAnimation &&
111
- bottomContentRef.current && { top: -bottomContentRef.current.scrollHeight })) },
111
+ return (React.createElement("div", { ref: mergeRefs([ref, headerRef]), className: cn(styles.header, className, (_b = {}, _b[styles.backgroundImage] = imageUrl, _b)), "data-test-id": getDataTestId(dataTestId), style: __assign(__assign({}, (imageUrl && { backgroundImage: "url(".concat(imageUrl, ")") })), (withAnimation &&
112
+ bottomContentRef.current && {
113
+ top: -bottomContentRef.current.scrollHeight,
114
+ })) },
112
115
  React.createElement("div", { className: cn(styles.mainLine, (_c = {},
113
116
  _c[styles.mainLineSticky] = withAnimation,
114
117
  _c[styles.mainLineWithImageBg] = imageUrl,
@@ -134,7 +137,10 @@ var NavigationBar = function (_a) {
134
137
  renderContent({
135
138
  extraClassName: styles.withBothAddons,
136
139
  style: __assign({ opacity: Math.min(1, (scrollTop - ADDONS_HEIGHT) / ADDONS_HEIGHT) }, (align === 'center'
137
- ? { marginLeft: titleMargin.left, marginRight: titleMargin.right }
140
+ ? {
141
+ marginLeft: titleMargin.left,
142
+ marginRight: titleMargin.right,
143
+ }
138
144
  : null)),
139
145
  }),
140
146
  hasRightPart && (React.createElement("div", { className: cn(styles.addonsWrapper, styles.rightAddons), ref: rightAddonsRef },
@@ -142,7 +148,7 @@ var NavigationBar = function (_a) {
142
148
  hasCloser && renderCloser()))),
143
149
  showAnimatedContentOnBot &&
144
150
  renderContent({
145
- ref: bottomContentRef,
151
+ wrapperRef: bottomContentRef,
146
152
  extraClassName: styles.underAddons,
147
153
  style: { opacity: Math.max(0, 1 - scrollTop / ADDONS_HEIGHT) },
148
154
  hidden: scrollTop / ADDONS_HEIGHT > 1,
@@ -155,6 +161,6 @@ var NavigationBar = function (_a) {
155
161
  _d)),
156
162
  }),
157
163
  bottomAddons && (React.createElement("div", { className: cn(styles.bottomAddons, bottomAddonsClassName) }, bottomAddons))));
158
- };
164
+ });
159
165
 
160
166
  export { NavigationBar };
@@ -6,7 +6,7 @@ import { Typography } from '@alfalab/core-components-typography/esm';
6
6
  import { ArrowLeftMediumMIcon } from '@alfalab/icons-glyph/ArrowLeftMediumMIcon';
7
7
  import { ArrowLeftMIcon } from '@alfalab/icons-glyph/ArrowLeftMIcon';
8
8
 
9
- var styles = {"component":"navigation-bar__component_65af1","mobileComponent":"navigation-bar__mobileComponent_65af1","flex":"navigation-bar__flex_65af1","iconWrapper":"navigation-bar__iconWrapper_65af1","text":"navigation-bar__text_65af1","mobileWrapper":"navigation-bar__mobileWrapper_65af1"};
9
+ var styles = {"component":"navigation-bar__component_1lkkr","mobileComponent":"navigation-bar__mobileComponent_1lkkr","flex":"navigation-bar__flex_1lkkr","iconWrapper":"navigation-bar__iconWrapper_1lkkr","text":"navigation-bar__text_1lkkr","mobileWrapper":"navigation-bar__mobileWrapper_1lkkr"};
10
10
  require('./index.css')
11
11
 
12
12
  var BackArrowAddon = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 1iw35 */
1
+ /* hash: 7mmij */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-graphic-primary: #0e0e0e;
@@ -24,46 +24,46 @@
24
24
  --gap-s: 12px;
25
25
  } :root {
26
26
  } :root {
27
- } .navigation-bar__component_65af1 {
27
+ } .navigation-bar__component_1lkkr {
28
28
  height: 100%;
29
29
  background: var(--color-light-bg-primary-alpha-40);
30
30
  -webkit-backdrop-filter: blur(10px);
31
31
  backdrop-filter: blur(10px);
32
32
  border-radius: var(--border-radius-pill)
33
- } .navigation-bar__component_65af1 svg > path {
33
+ } .navigation-bar__component_1lkkr svg > path {
34
34
  transition: fill 0.2s ease;
35
35
  fill: var(--color-light-graphic-primary);
36
- } .navigation-bar__component_65af1:hover svg > path {
36
+ } .navigation-bar__component_1lkkr:hover svg > path {
37
37
  fill: var(--color-light-graphic-primary-tint-20);
38
- } .navigation-bar__component_65af1:active svg > path {
38
+ } .navigation-bar__component_1lkkr:active svg > path {
39
39
  fill: var(--color-light-graphic-primary-tint-30);
40
- } .navigation-bar__mobileComponent_65af1 {
40
+ } .navigation-bar__mobileComponent_1lkkr {
41
41
  height: 32px;
42
42
  margin: 0 var(--gap-xs);
43
43
  -webkit-backdrop-filter: none;
44
44
  backdrop-filter: none;
45
45
  background: none;
46
- } .navigation-bar__flex_65af1 {
46
+ } .navigation-bar__flex_1lkkr {
47
47
  display: flex;
48
48
  align-items: center;
49
- } .navigation-bar__iconWrapper_65af1 {
49
+ } .navigation-bar__iconWrapper_1lkkr {
50
50
  display: inline-flex;
51
51
  align-items: center;
52
52
  justify-content: center;
53
53
  height: 48px;
54
54
  margin: 0 var(--gap-xs) 0 var(--gap-s);
55
55
  border-radius: var(--border-radius-circle)
56
- } .navigation-bar__iconWrapper_65af1 + .navigation-bar__text_65af1 {
56
+ } .navigation-bar__iconWrapper_1lkkr + .navigation-bar__text_1lkkr {
57
57
  margin-right: var(--gap-s);
58
- } .navigation-bar__mobileWrapper_65af1 {
58
+ } .navigation-bar__mobileWrapper_1lkkr {
59
59
  width: 32px;
60
60
  height: 32px;
61
61
  background: var(--color-light-specialbg-secondary-transparent);
62
62
  -webkit-backdrop-filter: blur(10px);
63
63
  backdrop-filter: blur(10px);
64
64
  margin: 0
65
- } .navigation-bar__mobileWrapper_65af1 + .navigation-bar__text_65af1 {
65
+ } .navigation-bar__mobileWrapper_1lkkr + .navigation-bar__text_1lkkr {
66
66
  margin: 0 var(--gap-s) 0 var(--gap-xs);
67
- } .navigation-bar__mobileWrapper_65af1 svg > path {
67
+ } .navigation-bar__mobileWrapper_1lkkr svg > path {
68
68
  fill: var(--color-light-graphic-secondary);
69
69
  }
@@ -5,7 +5,7 @@ import { IconButton } from '@alfalab/core-components-icon-button/esm';
5
5
  import { CrossHeavyMIcon } from '@alfalab/icons-glyph/CrossHeavyMIcon';
6
6
  import { CrossMIcon } from '@alfalab/icons-glyph/CrossMIcon';
7
7
 
8
- var styles = {"closer":"navigation-bar__closer_1wm0n","button":"navigation-bar__button_1wm0n","mobile":"navigation-bar__mobile_1wm0n","sticky":"navigation-bar__sticky_1wm0n"};
8
+ var styles = {"closer":"navigation-bar__closer_ylt19","button":"navigation-bar__button_ylt19","mobile":"navigation-bar__mobile_ylt19","sticky":"navigation-bar__sticky_ylt19"};
9
9
  require('./index.css')
10
10
 
11
11
  var Closer = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 1hg1i */
1
+ /* hash: fjemv */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-graphic-primary: #0e0e0e;
@@ -18,7 +18,7 @@
18
18
  } :root {
19
19
  } :root {
20
20
  } :root {
21
- } .navigation-bar__closer_1wm0n {
21
+ } .navigation-bar__closer_ylt19 {
22
22
  flex-shrink: 0;
23
23
  width: 48px;
24
24
  height: 48px;
@@ -26,16 +26,16 @@
26
26
  display: flex;
27
27
  align-items: center;
28
28
  justify-content: center;
29
- } .navigation-bar__button_1wm0n {
29
+ } .navigation-bar__button_ylt19 {
30
30
  background: var(--color-light-bg-primary-alpha-40);
31
31
  -webkit-backdrop-filter: blur(10px);
32
32
  backdrop-filter: blur(10px);
33
33
  border-radius: 50px;
34
34
  color: var(--color-light-graphic-primary)
35
- } .navigation-bar__button_1wm0n.navigation-bar__mobile_1wm0n {
35
+ } .navigation-bar__button_ylt19.navigation-bar__mobile_ylt19 {
36
36
  background: var(--color-light-specialbg-secondary-transparent);
37
37
  color: var(--color-light-graphic-secondary);
38
- } .navigation-bar__sticky_1wm0n {
38
+ } .navigation-bar__sticky_ylt19 {
39
39
  position: sticky;
40
40
  top: 0;
41
41
  }
package/esm/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: v2nac */
1
+ /* hash: 1s74g */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-text-primary: #0e0e0e;
@@ -18,26 +18,26 @@
18
18
  --gap-s: 12px;
19
19
  } :root {
20
20
  } :root {
21
- } .navigation-bar__header_1holh {
21
+ } .navigation-bar__header_1p62k {
22
22
  width: 100%;
23
23
  box-sizing: border-box;
24
24
  transition: box-shadow 0.2s ease, background 0.2s ease
25
- } .navigation-bar__header_1holh.navigation-bar__header_1holh.navigation-bar__backgroundImage_1holh {
25
+ } .navigation-bar__header_1p62k.navigation-bar__header_1p62k.navigation-bar__backgroundImage_1p62k {
26
26
  background-repeat: no-repeat;
27
27
  background-position: center;
28
28
  background-size: cover;
29
- } .navigation-bar__mainLine_1holh {
29
+ } .navigation-bar__mainLine_1p62k {
30
30
  display: flex;
31
31
  align-items: stretch;
32
32
  justify-content: space-between;
33
33
  z-index: 1;
34
34
  background-color: inherit;
35
- } .navigation-bar__mainLineSticky_1holh {
35
+ } .navigation-bar__mainLineSticky_1p62k {
36
36
  position: sticky;
37
37
  top: 0;
38
- } .navigation-bar__mainLineWithImageBg_1holh {
38
+ } .navigation-bar__mainLineWithImageBg_1p62k {
39
39
  background-color: initial;
40
- } .navigation-bar__content_1holh {
40
+ } .navigation-bar__content_1p62k {
41
41
  color: var(--color-light-text-primary);
42
42
  display: flex;
43
43
  flex-flow: column nowrap;
@@ -46,27 +46,27 @@
46
46
  align-self: baseline;
47
47
  box-sizing: border-box;
48
48
  min-height: 48px
49
- } .navigation-bar__content_1holh.navigation-bar__withBothAddons_1holh,
50
- .navigation-bar__content_1holh.navigation-bar__withCompactTitle_1holh {
49
+ } .navigation-bar__content_1p62k.navigation-bar__withBothAddons_1p62k,
50
+ .navigation-bar__content_1p62k.navigation-bar__withCompactTitle_1p62k {
51
51
  font-size: 16px;
52
52
  line-height: 20px;
53
53
  font-weight: 500;
54
54
  align-self: center;
55
55
  padding-top: var(--gap-2xs);
56
56
  padding-bottom: var(--gap-2xs)
57
- } .navigation-bar__content_1holh.navigation-bar__withBothAddons_1holh > .navigation-bar__children_1holh,
58
- .navigation-bar__content_1holh.navigation-bar__withBothAddons_1holh > .navigation-bar__title_1holh,
59
- .navigation-bar__content_1holh.navigation-bar__withCompactTitle_1holh > .navigation-bar__children_1holh,
60
- .navigation-bar__content_1holh.navigation-bar__withCompactTitle_1holh > .navigation-bar__title_1holh {
57
+ } .navigation-bar__content_1p62k.navigation-bar__withBothAddons_1p62k > .navigation-bar__children_1p62k,
58
+ .navigation-bar__content_1p62k.navigation-bar__withBothAddons_1p62k > .navigation-bar__title_1p62k,
59
+ .navigation-bar__content_1p62k.navigation-bar__withCompactTitle_1p62k > .navigation-bar__children_1p62k,
60
+ .navigation-bar__content_1p62k.navigation-bar__withCompactTitle_1p62k > .navigation-bar__title_1p62k {
61
61
  -webkit-line-clamp: 1;
62
62
  word-break: break-all;
63
- } .navigation-bar__content_1holh.navigation-bar__contentOnBotDesktop_1holh.navigation-bar__contentOnBotDesktop_1holh {
63
+ } .navigation-bar__content_1p62k.navigation-bar__contentOnBotDesktop_1p62k.navigation-bar__contentOnBotDesktop_1p62k {
64
64
  padding-top: var(--gap-s);
65
- } .navigation-bar__content_1holh.navigation-bar__contentOnBotMobile_1holh.navigation-bar__contentOnBotMobile_1holh {
65
+ } .navigation-bar__content_1p62k.navigation-bar__contentOnBotMobile_1p62k.navigation-bar__contentOnBotMobile_1p62k {
66
66
  padding-top: var(--gap-s);
67
- } .navigation-bar__title_1holh {
67
+ } .navigation-bar__title_1p62k {
68
68
  word-break: break-word;
69
- } .navigation-bar__subtitle_1holh {
69
+ } .navigation-bar__subtitle_1p62k {
70
70
  font-size: 14px;
71
71
  line-height: 20px;
72
72
  font-weight: 400;
@@ -77,11 +77,11 @@
77
77
 
78
78
  color: var(--color-light-text-secondary);
79
79
  word-break: break-all;
80
- } .navigation-bar__addonsWrapper_1holh {
80
+ } .navigation-bar__addonsWrapper_1p62k {
81
81
  display: flex;
82
- } .navigation-bar__rightAddons_1holh {
82
+ } .navigation-bar__rightAddons_1p62k {
83
83
  margin-left: auto;
84
- } .navigation-bar__addon_1holh {
84
+ } .navigation-bar__addon_1p62k {
85
85
  min-width: 48px;
86
86
  height: 48px;
87
87
  display: flex;
@@ -89,18 +89,18 @@
89
89
  align-items: center;
90
90
  flex-shrink: 0;
91
91
  pointer-events: all;
92
- } .navigation-bar__bottomAddons_1holh {
92
+ } .navigation-bar__bottomAddons_1p62k {
93
93
  pointer-events: all;
94
- } .navigation-bar__closer_1holh {
94
+ } .navigation-bar__closer_1p62k {
95
95
  margin-left: auto;
96
- } .navigation-bar__left_1holh {
96
+ } .navigation-bar__left_1p62k {
97
97
  text-align: left;
98
- } .navigation-bar__center_1holh {
98
+ } .navigation-bar__center_1p62k {
99
99
  text-align: center;
100
- } .navigation-bar__trim_1holh {
100
+ } .navigation-bar__trim_1p62k {
101
101
  overflow: hidden
102
- } .navigation-bar__trim_1holh .navigation-bar__title_1holh,
103
- .navigation-bar__trim_1holh .navigation-bar__children_1holh {
102
+ } .navigation-bar__trim_1p62k .navigation-bar__title_1p62k,
103
+ .navigation-bar__trim_1p62k .navigation-bar__children_1p62k {
104
104
  -webkit-line-clamp: 2;
105
105
  display: -webkit-box;
106
106
  -webkit-box-orient: vertical;
package/esm/index.js CHANGED
@@ -2,6 +2,7 @@ export { NavigationBar } from './Component.js';
2
2
  export { Closer } from './components/closer/Component.js';
3
3
  import 'tslib';
4
4
  import 'react';
5
+ import 'react-merge-refs';
5
6
  import 'classnames';
6
7
  import '@alfalab/hooks';
7
8
  import './components/back-arrow-addon/Component.js';
package/esm/types.d.ts CHANGED
@@ -106,7 +106,7 @@ type NavigationBarProps = {
106
106
  };
107
107
  type ContentParams = {
108
108
  extraClassName?: string;
109
- ref?: React.RefObject<HTMLDivElement>;
109
+ wrapperRef?: React.RefObject<HTMLDivElement>;
110
110
  style?: React.CSSProperties;
111
111
  hidden?: boolean;
112
112
  };
package/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: v2nac */
1
+ /* hash: 1s74g */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-text-primary: #0e0e0e;
@@ -18,26 +18,26 @@
18
18
  --gap-s: 12px;
19
19
  } :root {
20
20
  } :root {
21
- } .navigation-bar__header_1holh {
21
+ } .navigation-bar__header_1p62k {
22
22
  width: 100%;
23
23
  box-sizing: border-box;
24
24
  transition: box-shadow 0.2s ease, background 0.2s ease
25
- } .navigation-bar__header_1holh.navigation-bar__header_1holh.navigation-bar__backgroundImage_1holh {
25
+ } .navigation-bar__header_1p62k.navigation-bar__header_1p62k.navigation-bar__backgroundImage_1p62k {
26
26
  background-repeat: no-repeat;
27
27
  background-position: center;
28
28
  background-size: cover;
29
- } .navigation-bar__mainLine_1holh {
29
+ } .navigation-bar__mainLine_1p62k {
30
30
  display: flex;
31
31
  align-items: stretch;
32
32
  justify-content: space-between;
33
33
  z-index: 1;
34
34
  background-color: inherit;
35
- } .navigation-bar__mainLineSticky_1holh {
35
+ } .navigation-bar__mainLineSticky_1p62k {
36
36
  position: sticky;
37
37
  top: 0;
38
- } .navigation-bar__mainLineWithImageBg_1holh {
38
+ } .navigation-bar__mainLineWithImageBg_1p62k {
39
39
  background-color: initial;
40
- } .navigation-bar__content_1holh {
40
+ } .navigation-bar__content_1p62k {
41
41
  color: var(--color-light-text-primary);
42
42
  display: flex;
43
43
  flex-flow: column nowrap;
@@ -46,27 +46,27 @@
46
46
  align-self: baseline;
47
47
  box-sizing: border-box;
48
48
  min-height: 48px
49
- } .navigation-bar__content_1holh.navigation-bar__withBothAddons_1holh,
50
- .navigation-bar__content_1holh.navigation-bar__withCompactTitle_1holh {
49
+ } .navigation-bar__content_1p62k.navigation-bar__withBothAddons_1p62k,
50
+ .navigation-bar__content_1p62k.navigation-bar__withCompactTitle_1p62k {
51
51
  font-size: 16px;
52
52
  line-height: 20px;
53
53
  font-weight: 500;
54
54
  align-self: center;
55
55
  padding-top: var(--gap-2xs);
56
56
  padding-bottom: var(--gap-2xs)
57
- } .navigation-bar__content_1holh.navigation-bar__withBothAddons_1holh > .navigation-bar__children_1holh,
58
- .navigation-bar__content_1holh.navigation-bar__withBothAddons_1holh > .navigation-bar__title_1holh,
59
- .navigation-bar__content_1holh.navigation-bar__withCompactTitle_1holh > .navigation-bar__children_1holh,
60
- .navigation-bar__content_1holh.navigation-bar__withCompactTitle_1holh > .navigation-bar__title_1holh {
57
+ } .navigation-bar__content_1p62k.navigation-bar__withBothAddons_1p62k > .navigation-bar__children_1p62k,
58
+ .navigation-bar__content_1p62k.navigation-bar__withBothAddons_1p62k > .navigation-bar__title_1p62k,
59
+ .navigation-bar__content_1p62k.navigation-bar__withCompactTitle_1p62k > .navigation-bar__children_1p62k,
60
+ .navigation-bar__content_1p62k.navigation-bar__withCompactTitle_1p62k > .navigation-bar__title_1p62k {
61
61
  -webkit-line-clamp: 1;
62
62
  word-break: break-all;
63
- } .navigation-bar__content_1holh.navigation-bar__contentOnBotDesktop_1holh.navigation-bar__contentOnBotDesktop_1holh {
63
+ } .navigation-bar__content_1p62k.navigation-bar__contentOnBotDesktop_1p62k.navigation-bar__contentOnBotDesktop_1p62k {
64
64
  padding-top: var(--gap-s);
65
- } .navigation-bar__content_1holh.navigation-bar__contentOnBotMobile_1holh.navigation-bar__contentOnBotMobile_1holh {
65
+ } .navigation-bar__content_1p62k.navigation-bar__contentOnBotMobile_1p62k.navigation-bar__contentOnBotMobile_1p62k {
66
66
  padding-top: var(--gap-s);
67
- } .navigation-bar__title_1holh {
67
+ } .navigation-bar__title_1p62k {
68
68
  word-break: break-word;
69
- } .navigation-bar__subtitle_1holh {
69
+ } .navigation-bar__subtitle_1p62k {
70
70
  font-size: 14px;
71
71
  line-height: 20px;
72
72
  font-weight: 400;
@@ -77,11 +77,11 @@
77
77
 
78
78
  color: var(--color-light-text-secondary);
79
79
  word-break: break-all;
80
- } .navigation-bar__addonsWrapper_1holh {
80
+ } .navigation-bar__addonsWrapper_1p62k {
81
81
  display: flex;
82
- } .navigation-bar__rightAddons_1holh {
82
+ } .navigation-bar__rightAddons_1p62k {
83
83
  margin-left: auto;
84
- } .navigation-bar__addon_1holh {
84
+ } .navigation-bar__addon_1p62k {
85
85
  min-width: 48px;
86
86
  height: 48px;
87
87
  display: flex;
@@ -89,18 +89,18 @@
89
89
  align-items: center;
90
90
  flex-shrink: 0;
91
91
  pointer-events: all;
92
- } .navigation-bar__bottomAddons_1holh {
92
+ } .navigation-bar__bottomAddons_1p62k {
93
93
  pointer-events: all;
94
- } .navigation-bar__closer_1holh {
94
+ } .navigation-bar__closer_1p62k {
95
95
  margin-left: auto;
96
- } .navigation-bar__left_1holh {
96
+ } .navigation-bar__left_1p62k {
97
97
  text-align: left;
98
- } .navigation-bar__center_1holh {
98
+ } .navigation-bar__center_1p62k {
99
99
  text-align: center;
100
- } .navigation-bar__trim_1holh {
100
+ } .navigation-bar__trim_1p62k {
101
101
  overflow: hidden
102
- } .navigation-bar__trim_1holh .navigation-bar__title_1holh,
103
- .navigation-bar__trim_1holh .navigation-bar__children_1holh {
102
+ } .navigation-bar__trim_1p62k .navigation-bar__title_1p62k,
103
+ .navigation-bar__trim_1p62k .navigation-bar__children_1p62k {
104
104
  -webkit-line-clamp: 2;
105
105
  display: -webkit-box;
106
106
  -webkit-box-orient: vertical;
package/index.js CHANGED
@@ -6,6 +6,7 @@ var Component = require('./Component.js');
6
6
  var components_closer_Component = require('./components/closer/Component.js');
7
7
  require('tslib');
8
8
  require('react');
9
+ require('react-merge-refs');
9
10
  require('classnames');
10
11
  require('@alfalab/hooks');
11
12
  require('./components/back-arrow-addon/Component.js');
@@ -1,4 +1,5 @@
1
- import { FC } from 'react';
1
+ /// <reference types="react" />
2
+ import React from 'react';
2
3
  import { NavigationBarProps } from "./types";
3
- declare const NavigationBar: FC<NavigationBarProps>;
4
+ declare const NavigationBar: React.ForwardRefExoticComponent<NavigationBarProps & React.RefAttributes<HTMLDivElement>>;
4
5
  export { NavigationBar };
@@ -1,4 +1,5 @@
1
- import React, { useState, useRef, useEffect } from 'react';
1
+ import React, { forwardRef, useState, useRef, useEffect } from 'react';
2
+ import mergeRefs from 'react-merge-refs';
2
3
  import cn from 'classnames';
3
4
  import { useLayoutEffect_SAFE_FOR_SSR } from '@alfalab/hooks';
4
5
  import { BackArrowAddon } from './components/back-arrow-addon/Component.js';
@@ -16,12 +17,12 @@ const getDataTestId = (dataTestId, element) => {
16
17
  return dataTestId ? `${dataTestId}${elementPart}` : undefined;
17
18
  };
18
19
 
19
- const styles = {"header":"navigation-bar__header_1holh","backgroundImage":"navigation-bar__backgroundImage_1holh","mainLine":"navigation-bar__mainLine_1holh","mainLineSticky":"navigation-bar__mainLineSticky_1holh","mainLineWithImageBg":"navigation-bar__mainLineWithImageBg_1holh","content":"navigation-bar__content_1holh","withBothAddons":"navigation-bar__withBothAddons_1holh","withCompactTitle":"navigation-bar__withCompactTitle_1holh","children":"navigation-bar__children_1holh","title":"navigation-bar__title_1holh","contentOnBotDesktop":"navigation-bar__contentOnBotDesktop_1holh","contentOnBotMobile":"navigation-bar__contentOnBotMobile_1holh","subtitle":"navigation-bar__subtitle_1holh","addonsWrapper":"navigation-bar__addonsWrapper_1holh","rightAddons":"navigation-bar__rightAddons_1holh","addon":"navigation-bar__addon_1holh","bottomAddons":"navigation-bar__bottomAddons_1holh","closer":"navigation-bar__closer_1holh","left":"navigation-bar__left_1holh","center":"navigation-bar__center_1holh","trim":"navigation-bar__trim_1holh"};
20
+ const styles = {"header":"navigation-bar__header_1p62k","backgroundImage":"navigation-bar__backgroundImage_1p62k","mainLine":"navigation-bar__mainLine_1p62k","mainLineSticky":"navigation-bar__mainLineSticky_1p62k","mainLineWithImageBg":"navigation-bar__mainLineWithImageBg_1p62k","content":"navigation-bar__content_1p62k","withBothAddons":"navigation-bar__withBothAddons_1p62k","withCompactTitle":"navigation-bar__withCompactTitle_1p62k","children":"navigation-bar__children_1p62k","title":"navigation-bar__title_1p62k","contentOnBotDesktop":"navigation-bar__contentOnBotDesktop_1p62k","contentOnBotMobile":"navigation-bar__contentOnBotMobile_1p62k","subtitle":"navigation-bar__subtitle_1p62k","addonsWrapper":"navigation-bar__addonsWrapper_1p62k","rightAddons":"navigation-bar__rightAddons_1p62k","addon":"navigation-bar__addon_1p62k","bottomAddons":"navigation-bar__bottomAddons_1p62k","closer":"navigation-bar__closer_1p62k","left":"navigation-bar__left_1p62k","center":"navigation-bar__center_1p62k","trim":"navigation-bar__trim_1p62k"};
20
21
  require('./index.css')
21
22
 
22
23
  /* eslint-disable complexity */
23
24
  const ADDONS_HEIGHT = 48;
24
- const NavigationBar = ({ addonClassName, className, contentClassName, closerClassName, leftAddons, rightAddons, bottomAddons, bottomAddonsClassName, children, align = 'left', trim = true, title, titleSize = 'default', subtitle, hasCloser, hasBackButton, backButtonClassName, dataTestId, imageUrl, closerIcon, onClose, view, scrollableParentRef, sticky, onBack, }) => {
25
+ const NavigationBar = forwardRef(({ addonClassName, className, contentClassName, closerClassName, leftAddons, rightAddons, bottomAddons, bottomAddonsClassName, children, align = 'left', trim = true, title, titleSize = 'default', subtitle, hasCloser, hasBackButton, backButtonClassName, dataTestId, imageUrl, closerIcon, onClose, view, scrollableParentRef, sticky, onBack, }, ref) => {
25
26
  const [scrollTop, setScrollTop] = useState(0);
26
27
  const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });
27
28
  const bottomContentRef = useRef(null);
@@ -91,8 +92,8 @@ const NavigationBar = ({ addonClassName, className, contentClassName, closerClas
91
92
  React.createElement(BackArrowAddon, { textOpacity: textOpacity, view: view, onClick: onBack, "data-test-id": getDataTestId(dataTestId, 'back-button') })));
92
93
  };
93
94
  const renderContent = (args = {}) => {
94
- const { extraClassName, ref, style, hidden } = args;
95
- return (React.createElement("div", { style: { ...style, visibility: hidden ? 'hidden' : 'visible' }, ref: ref, className: cn(styles.content, extraClassName, contentClassName, styles[align], {
95
+ const { extraClassName, wrapperRef, style, hidden } = args;
96
+ return (React.createElement("div", { style: { ...style, visibility: hidden ? 'hidden' : 'visible' }, ref: wrapperRef, className: cn(styles.content, extraClassName, contentClassName, styles[align], {
96
97
  [styles.trim]: trim,
97
98
  [styles.withCompactTitle]: view === 'mobile' && compactTitle && hasContent,
98
99
  }), "aria-hidden": hidden },
@@ -102,10 +103,12 @@ const NavigationBar = ({ addonClassName, className, contentClassName, closerClas
102
103
  };
103
104
  const renderCloser = () => (React.createElement("div", { className: cn(styles.addon, styles.closer, closerClassName) },
104
105
  React.createElement(Closer, { view: view, icon: closerIcon, dataTestId: getDataTestId(dataTestId, 'closer'), onClose: onClose })));
105
- return (React.createElement("div", { ref: headerRef, className: cn(styles.header, className, { [styles.backgroundImage]: imageUrl }), "data-test-id": getDataTestId(dataTestId), style: {
106
+ return (React.createElement("div", { ref: mergeRefs([ref, headerRef]), className: cn(styles.header, className, { [styles.backgroundImage]: imageUrl }), "data-test-id": getDataTestId(dataTestId), style: {
106
107
  ...(imageUrl && { backgroundImage: `url(${imageUrl})` }),
107
108
  ...(withAnimation &&
108
- bottomContentRef.current && { top: -bottomContentRef.current.scrollHeight }),
109
+ bottomContentRef.current && {
110
+ top: -bottomContentRef.current.scrollHeight,
111
+ }),
109
112
  } },
110
113
  React.createElement("div", { className: cn(styles.mainLine, {
111
114
  [styles.mainLineSticky]: withAnimation,
@@ -138,7 +141,10 @@ const NavigationBar = ({ addonClassName, className, contentClassName, closerClas
138
141
  style: {
139
142
  opacity: Math.min(1, (scrollTop - ADDONS_HEIGHT) / ADDONS_HEIGHT),
140
143
  ...(align === 'center'
141
- ? { marginLeft: titleMargin.left, marginRight: titleMargin.right }
144
+ ? {
145
+ marginLeft: titleMargin.left,
146
+ marginRight: titleMargin.right,
147
+ }
142
148
  : null),
143
149
  },
144
150
  }),
@@ -147,7 +153,7 @@ const NavigationBar = ({ addonClassName, className, contentClassName, closerClas
147
153
  hasCloser && renderCloser()))),
148
154
  showAnimatedContentOnBot &&
149
155
  renderContent({
150
- ref: bottomContentRef,
156
+ wrapperRef: bottomContentRef,
151
157
  extraClassName: styles.underAddons,
152
158
  style: { opacity: Math.max(0, 1 - scrollTop / ADDONS_HEIGHT) },
153
159
  hidden: scrollTop / ADDONS_HEIGHT > 1,
@@ -160,6 +166,6 @@ const NavigationBar = ({ addonClassName, className, contentClassName, closerClas
160
166
  }),
161
167
  }),
162
168
  bottomAddons && (React.createElement("div", { className: cn(styles.bottomAddons, bottomAddonsClassName) }, bottomAddons))));
163
- };
169
+ });
164
170
 
165
171
  export { NavigationBar };
@@ -5,7 +5,7 @@ import { Typography } from '@alfalab/core-components-typography/modern';
5
5
  import { ArrowLeftMediumMIcon } from '@alfalab/icons-glyph/ArrowLeftMediumMIcon';
6
6
  import { ArrowLeftMIcon } from '@alfalab/icons-glyph/ArrowLeftMIcon';
7
7
 
8
- const styles = {"component":"navigation-bar__component_65af1","mobileComponent":"navigation-bar__mobileComponent_65af1","flex":"navigation-bar__flex_65af1","iconWrapper":"navigation-bar__iconWrapper_65af1","text":"navigation-bar__text_65af1","mobileWrapper":"navigation-bar__mobileWrapper_65af1"};
8
+ const styles = {"component":"navigation-bar__component_1lkkr","mobileComponent":"navigation-bar__mobileComponent_1lkkr","flex":"navigation-bar__flex_1lkkr","iconWrapper":"navigation-bar__iconWrapper_1lkkr","text":"navigation-bar__text_1lkkr","mobileWrapper":"navigation-bar__mobileWrapper_1lkkr"};
9
9
  require('./index.css')
10
10
 
11
11
  const BackArrowAddon = ({ text = 'Назад', onClick, className, textOpacity = 1, view, ...htmlAttributes }) => {
@@ -1,4 +1,4 @@
1
- /* hash: 1iw35 */
1
+ /* hash: 7mmij */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-graphic-primary: #0e0e0e;
@@ -24,46 +24,46 @@
24
24
  --gap-s: 12px;
25
25
  } :root {
26
26
  } :root {
27
- } .navigation-bar__component_65af1 {
27
+ } .navigation-bar__component_1lkkr {
28
28
  height: 100%;
29
29
  background: var(--color-light-bg-primary-alpha-40);
30
30
  -webkit-backdrop-filter: blur(10px);
31
31
  backdrop-filter: blur(10px);
32
32
  border-radius: var(--border-radius-pill)
33
- } .navigation-bar__component_65af1 svg > path {
33
+ } .navigation-bar__component_1lkkr svg > path {
34
34
  transition: fill 0.2s ease;
35
35
  fill: var(--color-light-graphic-primary);
36
- } .navigation-bar__component_65af1:hover svg > path {
36
+ } .navigation-bar__component_1lkkr:hover svg > path {
37
37
  fill: var(--color-light-graphic-primary-tint-20);
38
- } .navigation-bar__component_65af1:active svg > path {
38
+ } .navigation-bar__component_1lkkr:active svg > path {
39
39
  fill: var(--color-light-graphic-primary-tint-30);
40
- } .navigation-bar__mobileComponent_65af1 {
40
+ } .navigation-bar__mobileComponent_1lkkr {
41
41
  height: 32px;
42
42
  margin: 0 var(--gap-xs);
43
43
  -webkit-backdrop-filter: none;
44
44
  backdrop-filter: none;
45
45
  background: none;
46
- } .navigation-bar__flex_65af1 {
46
+ } .navigation-bar__flex_1lkkr {
47
47
  display: flex;
48
48
  align-items: center;
49
- } .navigation-bar__iconWrapper_65af1 {
49
+ } .navigation-bar__iconWrapper_1lkkr {
50
50
  display: inline-flex;
51
51
  align-items: center;
52
52
  justify-content: center;
53
53
  height: 48px;
54
54
  margin: 0 var(--gap-xs) 0 var(--gap-s);
55
55
  border-radius: var(--border-radius-circle)
56
- } .navigation-bar__iconWrapper_65af1 + .navigation-bar__text_65af1 {
56
+ } .navigation-bar__iconWrapper_1lkkr + .navigation-bar__text_1lkkr {
57
57
  margin-right: var(--gap-s);
58
- } .navigation-bar__mobileWrapper_65af1 {
58
+ } .navigation-bar__mobileWrapper_1lkkr {
59
59
  width: 32px;
60
60
  height: 32px;
61
61
  background: var(--color-light-specialbg-secondary-transparent);
62
62
  -webkit-backdrop-filter: blur(10px);
63
63
  backdrop-filter: blur(10px);
64
64
  margin: 0
65
- } .navigation-bar__mobileWrapper_65af1 + .navigation-bar__text_65af1 {
65
+ } .navigation-bar__mobileWrapper_1lkkr + .navigation-bar__text_1lkkr {
66
66
  margin: 0 var(--gap-s) 0 var(--gap-xs);
67
- } .navigation-bar__mobileWrapper_65af1 svg > path {
67
+ } .navigation-bar__mobileWrapper_1lkkr svg > path {
68
68
  fill: var(--color-light-graphic-secondary);
69
69
  }
@@ -4,7 +4,7 @@ import { IconButton } from '@alfalab/core-components-icon-button/modern';
4
4
  import { CrossHeavyMIcon } from '@alfalab/icons-glyph/CrossHeavyMIcon';
5
5
  import { CrossMIcon } from '@alfalab/icons-glyph/CrossMIcon';
6
6
 
7
- const styles = {"closer":"navigation-bar__closer_1wm0n","button":"navigation-bar__button_1wm0n","mobile":"navigation-bar__mobile_1wm0n","sticky":"navigation-bar__sticky_1wm0n"};
7
+ const styles = {"closer":"navigation-bar__closer_ylt19","button":"navigation-bar__button_ylt19","mobile":"navigation-bar__mobile_ylt19","sticky":"navigation-bar__sticky_ylt19"};
8
8
  require('./index.css')
9
9
 
10
10
  const Closer = ({ view, className, sticky, icon = view === 'desktop' ? CrossHeavyMIcon : CrossMIcon, dataTestId, onClose, ...restProps }) => {
@@ -1,4 +1,4 @@
1
- /* hash: 1hg1i */
1
+ /* hash: fjemv */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-graphic-primary: #0e0e0e;
@@ -18,7 +18,7 @@
18
18
  } :root {
19
19
  } :root {
20
20
  } :root {
21
- } .navigation-bar__closer_1wm0n {
21
+ } .navigation-bar__closer_ylt19 {
22
22
  flex-shrink: 0;
23
23
  width: 48px;
24
24
  height: 48px;
@@ -26,16 +26,16 @@
26
26
  display: flex;
27
27
  align-items: center;
28
28
  justify-content: center;
29
- } .navigation-bar__button_1wm0n {
29
+ } .navigation-bar__button_ylt19 {
30
30
  background: var(--color-light-bg-primary-alpha-40);
31
31
  -webkit-backdrop-filter: blur(10px);
32
32
  backdrop-filter: blur(10px);
33
33
  border-radius: 50px;
34
34
  color: var(--color-light-graphic-primary)
35
- } .navigation-bar__button_1wm0n.navigation-bar__mobile_1wm0n {
35
+ } .navigation-bar__button_ylt19.navigation-bar__mobile_ylt19 {
36
36
  background: var(--color-light-specialbg-secondary-transparent);
37
37
  color: var(--color-light-graphic-secondary);
38
- } .navigation-bar__sticky_1wm0n {
38
+ } .navigation-bar__sticky_ylt19 {
39
39
  position: sticky;
40
40
  top: 0;
41
41
  }
package/modern/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: v2nac */
1
+ /* hash: 1s74g */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-text-primary: #0e0e0e;
@@ -18,26 +18,26 @@
18
18
  --gap-s: 12px;
19
19
  } :root {
20
20
  } :root {
21
- } .navigation-bar__header_1holh {
21
+ } .navigation-bar__header_1p62k {
22
22
  width: 100%;
23
23
  box-sizing: border-box;
24
24
  transition: box-shadow 0.2s ease, background 0.2s ease
25
- } .navigation-bar__header_1holh.navigation-bar__header_1holh.navigation-bar__backgroundImage_1holh {
25
+ } .navigation-bar__header_1p62k.navigation-bar__header_1p62k.navigation-bar__backgroundImage_1p62k {
26
26
  background-repeat: no-repeat;
27
27
  background-position: center;
28
28
  background-size: cover;
29
- } .navigation-bar__mainLine_1holh {
29
+ } .navigation-bar__mainLine_1p62k {
30
30
  display: flex;
31
31
  align-items: stretch;
32
32
  justify-content: space-between;
33
33
  z-index: 1;
34
34
  background-color: inherit;
35
- } .navigation-bar__mainLineSticky_1holh {
35
+ } .navigation-bar__mainLineSticky_1p62k {
36
36
  position: sticky;
37
37
  top: 0;
38
- } .navigation-bar__mainLineWithImageBg_1holh {
38
+ } .navigation-bar__mainLineWithImageBg_1p62k {
39
39
  background-color: initial;
40
- } .navigation-bar__content_1holh {
40
+ } .navigation-bar__content_1p62k {
41
41
  color: var(--color-light-text-primary);
42
42
  display: flex;
43
43
  flex-flow: column nowrap;
@@ -46,27 +46,27 @@
46
46
  align-self: baseline;
47
47
  box-sizing: border-box;
48
48
  min-height: 48px
49
- } .navigation-bar__content_1holh.navigation-bar__withBothAddons_1holh,
50
- .navigation-bar__content_1holh.navigation-bar__withCompactTitle_1holh {
49
+ } .navigation-bar__content_1p62k.navigation-bar__withBothAddons_1p62k,
50
+ .navigation-bar__content_1p62k.navigation-bar__withCompactTitle_1p62k {
51
51
  font-size: 16px;
52
52
  line-height: 20px;
53
53
  font-weight: 500;
54
54
  align-self: center;
55
55
  padding-top: var(--gap-2xs);
56
56
  padding-bottom: var(--gap-2xs)
57
- } .navigation-bar__content_1holh.navigation-bar__withBothAddons_1holh > .navigation-bar__children_1holh,
58
- .navigation-bar__content_1holh.navigation-bar__withBothAddons_1holh > .navigation-bar__title_1holh,
59
- .navigation-bar__content_1holh.navigation-bar__withCompactTitle_1holh > .navigation-bar__children_1holh,
60
- .navigation-bar__content_1holh.navigation-bar__withCompactTitle_1holh > .navigation-bar__title_1holh {
57
+ } .navigation-bar__content_1p62k.navigation-bar__withBothAddons_1p62k > .navigation-bar__children_1p62k,
58
+ .navigation-bar__content_1p62k.navigation-bar__withBothAddons_1p62k > .navigation-bar__title_1p62k,
59
+ .navigation-bar__content_1p62k.navigation-bar__withCompactTitle_1p62k > .navigation-bar__children_1p62k,
60
+ .navigation-bar__content_1p62k.navigation-bar__withCompactTitle_1p62k > .navigation-bar__title_1p62k {
61
61
  -webkit-line-clamp: 1;
62
62
  word-break: break-all;
63
- } .navigation-bar__content_1holh.navigation-bar__contentOnBotDesktop_1holh.navigation-bar__contentOnBotDesktop_1holh {
63
+ } .navigation-bar__content_1p62k.navigation-bar__contentOnBotDesktop_1p62k.navigation-bar__contentOnBotDesktop_1p62k {
64
64
  padding-top: var(--gap-s);
65
- } .navigation-bar__content_1holh.navigation-bar__contentOnBotMobile_1holh.navigation-bar__contentOnBotMobile_1holh {
65
+ } .navigation-bar__content_1p62k.navigation-bar__contentOnBotMobile_1p62k.navigation-bar__contentOnBotMobile_1p62k {
66
66
  padding-top: var(--gap-s);
67
- } .navigation-bar__title_1holh {
67
+ } .navigation-bar__title_1p62k {
68
68
  word-break: break-word;
69
- } .navigation-bar__subtitle_1holh {
69
+ } .navigation-bar__subtitle_1p62k {
70
70
  font-size: 14px;
71
71
  line-height: 20px;
72
72
  font-weight: 400;
@@ -77,11 +77,11 @@
77
77
 
78
78
  color: var(--color-light-text-secondary);
79
79
  word-break: break-all;
80
- } .navigation-bar__addonsWrapper_1holh {
80
+ } .navigation-bar__addonsWrapper_1p62k {
81
81
  display: flex;
82
- } .navigation-bar__rightAddons_1holh {
82
+ } .navigation-bar__rightAddons_1p62k {
83
83
  margin-left: auto;
84
- } .navigation-bar__addon_1holh {
84
+ } .navigation-bar__addon_1p62k {
85
85
  min-width: 48px;
86
86
  height: 48px;
87
87
  display: flex;
@@ -89,18 +89,18 @@
89
89
  align-items: center;
90
90
  flex-shrink: 0;
91
91
  pointer-events: all;
92
- } .navigation-bar__bottomAddons_1holh {
92
+ } .navigation-bar__bottomAddons_1p62k {
93
93
  pointer-events: all;
94
- } .navigation-bar__closer_1holh {
94
+ } .navigation-bar__closer_1p62k {
95
95
  margin-left: auto;
96
- } .navigation-bar__left_1holh {
96
+ } .navigation-bar__left_1p62k {
97
97
  text-align: left;
98
- } .navigation-bar__center_1holh {
98
+ } .navigation-bar__center_1p62k {
99
99
  text-align: center;
100
- } .navigation-bar__trim_1holh {
100
+ } .navigation-bar__trim_1p62k {
101
101
  overflow: hidden
102
- } .navigation-bar__trim_1holh .navigation-bar__title_1holh,
103
- .navigation-bar__trim_1holh .navigation-bar__children_1holh {
102
+ } .navigation-bar__trim_1p62k .navigation-bar__title_1p62k,
103
+ .navigation-bar__trim_1p62k .navigation-bar__children_1p62k {
104
104
  -webkit-line-clamp: 2;
105
105
  display: -webkit-box;
106
106
  -webkit-box-orient: vertical;
package/modern/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export { NavigationBar } from './Component.js';
2
2
  export { Closer } from './components/closer/Component.js';
3
3
  import 'react';
4
+ import 'react-merge-refs';
4
5
  import 'classnames';
5
6
  import '@alfalab/hooks';
6
7
  import './components/back-arrow-addon/Component.js';
package/modern/types.d.ts CHANGED
@@ -106,7 +106,7 @@ type NavigationBarProps = {
106
106
  };
107
107
  type ContentParams = {
108
108
  extraClassName?: string;
109
- ref?: React.RefObject<HTMLDivElement>;
109
+ wrapperRef?: React.RefObject<HTMLDivElement>;
110
110
  style?: React.CSSProperties;
111
111
  hidden?: boolean;
112
112
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-navigation-bar",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "Navigation bar component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
package/types.d.ts CHANGED
@@ -106,7 +106,7 @@ type NavigationBarProps = {
106
106
  };
107
107
  type ContentParams = {
108
108
  extraClassName?: string;
109
- ref?: React.RefObject<HTMLDivElement>;
109
+ wrapperRef?: React.RefObject<HTMLDivElement>;
110
110
  style?: React.CSSProperties;
111
111
  hidden?: boolean;
112
112
  };