@alfalab/core-components-navigation-bar 0.1.0 → 0.1.2

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/esm/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: 72dgh */
1
+ /* hash: zc64y */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-text-primary: #0b1f35;
@@ -18,26 +18,26 @@
18
18
  --gap-s: 12px;
19
19
  } :root {
20
20
  } :root {
21
- } .navigation-bar__header_1ssvj {
21
+ } .navigation-bar__header_5ow3j {
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_1ssvj.navigation-bar__header_1ssvj.navigation-bar__backgroundImage_1ssvj {
25
+ } .navigation-bar__header_5ow3j.navigation-bar__header_5ow3j.navigation-bar__backgroundImage_5ow3j {
26
26
  background-repeat: no-repeat;
27
27
  background-position: center;
28
28
  background-size: cover;
29
- } .navigation-bar__mainLine_1ssvj {
29
+ } .navigation-bar__mainLine_5ow3j {
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_1ssvj {
35
+ } .navigation-bar__mainLineSticky_5ow3j {
36
36
  position: sticky;
37
37
  top: 0;
38
- } .navigation-bar__mainLineWithImageBg_1ssvj {
38
+ } .navigation-bar__mainLineWithImageBg_5ow3j {
39
39
  background-color: initial;
40
- } .navigation-bar__content_1ssvj {
40
+ } .navigation-bar__content_5ow3j {
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_1ssvj.navigation-bar__withBothAddons_1ssvj,
50
- .navigation-bar__content_1ssvj.navigation-bar__withCompactTitle_1ssvj {
49
+ } .navigation-bar__content_5ow3j.navigation-bar__withBothAddons_5ow3j,
50
+ .navigation-bar__content_5ow3j.navigation-bar__withCompactTitle_5ow3j {
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_1ssvj.navigation-bar__withBothAddons_1ssvj > .navigation-bar__children_1ssvj,
58
- .navigation-bar__content_1ssvj.navigation-bar__withBothAddons_1ssvj > .navigation-bar__title_1ssvj,
59
- .navigation-bar__content_1ssvj.navigation-bar__withCompactTitle_1ssvj > .navigation-bar__children_1ssvj,
60
- .navigation-bar__content_1ssvj.navigation-bar__withCompactTitle_1ssvj > .navigation-bar__title_1ssvj {
57
+ } .navigation-bar__content_5ow3j.navigation-bar__withBothAddons_5ow3j > .navigation-bar__children_5ow3j,
58
+ .navigation-bar__content_5ow3j.navigation-bar__withBothAddons_5ow3j > .navigation-bar__title_5ow3j,
59
+ .navigation-bar__content_5ow3j.navigation-bar__withCompactTitle_5ow3j > .navigation-bar__children_5ow3j,
60
+ .navigation-bar__content_5ow3j.navigation-bar__withCompactTitle_5ow3j > .navigation-bar__title_5ow3j {
61
61
  -webkit-line-clamp: 1;
62
62
  word-break: break-all;
63
- } .navigation-bar__content_1ssvj.navigation-bar__contentOnBotDesktop_1ssvj.navigation-bar__contentOnBotDesktop_1ssvj {
63
+ } .navigation-bar__content_5ow3j.navigation-bar__contentOnBotDesktop_5ow3j.navigation-bar__contentOnBotDesktop_5ow3j {
64
64
  padding-top: var(--gap-s);
65
- } .navigation-bar__content_1ssvj.navigation-bar__contentOnBotMobile_1ssvj.navigation-bar__contentOnBotMobile_1ssvj {
65
+ } .navigation-bar__content_5ow3j.navigation-bar__contentOnBotMobile_5ow3j.navigation-bar__contentOnBotMobile_5ow3j {
66
66
  padding-top: var(--gap-s);
67
- } .navigation-bar__title_1ssvj {
67
+ } .navigation-bar__title_5ow3j {
68
68
  word-break: break-word;
69
- } .navigation-bar__subtitle_1ssvj {
69
+ } .navigation-bar__subtitle_5ow3j {
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_1ssvj {
80
+ } .navigation-bar__addonsWrapper_5ow3j {
81
81
  display: flex;
82
- } .navigation-bar__rightAddons_1ssvj {
82
+ } .navigation-bar__rightAddons_5ow3j {
83
83
  margin-left: auto;
84
- } .navigation-bar__addon_1ssvj {
84
+ } .navigation-bar__addon_5ow3j {
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_1ssvj {
92
+ } .navigation-bar__bottomAddons_5ow3j {
93
93
  pointer-events: all;
94
- } .navigation-bar__closer_1ssvj {
94
+ } .navigation-bar__closer_5ow3j {
95
95
  margin-left: auto;
96
- } .navigation-bar__left_1ssvj {
96
+ } .navigation-bar__left_5ow3j {
97
97
  text-align: left;
98
- } .navigation-bar__center_1ssvj {
98
+ } .navigation-bar__center_5ow3j {
99
99
  text-align: center;
100
- } .navigation-bar__trim_1ssvj {
100
+ } .navigation-bar__trim_5ow3j {
101
101
  overflow: hidden
102
- } .navigation-bar__trim_1ssvj .navigation-bar__title_1ssvj,
103
- .navigation-bar__trim_1ssvj .navigation-bar__children_1ssvj {
102
+ } .navigation-bar__trim_5ow3j .navigation-bar__title_5ow3j,
103
+ .navigation-bar__trim_5ow3j .navigation-bar__children_5ow3j {
104
104
  -webkit-line-clamp: 2;
105
105
  display: -webkit-box;
106
106
  -webkit-box-orient: vertical;
package/esm/index.js CHANGED
@@ -3,6 +3,7 @@ export { Closer } from './components/closer/Component.js';
3
3
  import 'tslib';
4
4
  import 'react';
5
5
  import 'classnames';
6
+ import '@alfalab/hooks';
6
7
  import './components/back-arrow-addon/Component.js';
7
8
  import '@alfalab/core-components-button/esm';
8
9
  import '@alfalab/core-components-typography/esm';
package/esm/types.d.ts CHANGED
@@ -100,9 +100,9 @@ type NavigationBarProps = {
100
100
  */
101
101
  view: 'desktop' | 'mobile';
102
102
  /**
103
- * Ссылка на родительскую ноду.
103
+ * Ссылка на родительскую ноду overflow: auto
104
104
  */
105
- parentRef?: React.RefObject<HTMLDivElement>;
105
+ scrollableParentRef?: React.RefObject<HTMLDivElement>;
106
106
  };
107
107
  type ContentParams = {
108
108
  extraClassName?: string;
package/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: 72dgh */
1
+ /* hash: zc64y */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-text-primary: #0b1f35;
@@ -18,26 +18,26 @@
18
18
  --gap-s: 12px;
19
19
  } :root {
20
20
  } :root {
21
- } .navigation-bar__header_1ssvj {
21
+ } .navigation-bar__header_5ow3j {
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_1ssvj.navigation-bar__header_1ssvj.navigation-bar__backgroundImage_1ssvj {
25
+ } .navigation-bar__header_5ow3j.navigation-bar__header_5ow3j.navigation-bar__backgroundImage_5ow3j {
26
26
  background-repeat: no-repeat;
27
27
  background-position: center;
28
28
  background-size: cover;
29
- } .navigation-bar__mainLine_1ssvj {
29
+ } .navigation-bar__mainLine_5ow3j {
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_1ssvj {
35
+ } .navigation-bar__mainLineSticky_5ow3j {
36
36
  position: sticky;
37
37
  top: 0;
38
- } .navigation-bar__mainLineWithImageBg_1ssvj {
38
+ } .navigation-bar__mainLineWithImageBg_5ow3j {
39
39
  background-color: initial;
40
- } .navigation-bar__content_1ssvj {
40
+ } .navigation-bar__content_5ow3j {
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_1ssvj.navigation-bar__withBothAddons_1ssvj,
50
- .navigation-bar__content_1ssvj.navigation-bar__withCompactTitle_1ssvj {
49
+ } .navigation-bar__content_5ow3j.navigation-bar__withBothAddons_5ow3j,
50
+ .navigation-bar__content_5ow3j.navigation-bar__withCompactTitle_5ow3j {
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_1ssvj.navigation-bar__withBothAddons_1ssvj > .navigation-bar__children_1ssvj,
58
- .navigation-bar__content_1ssvj.navigation-bar__withBothAddons_1ssvj > .navigation-bar__title_1ssvj,
59
- .navigation-bar__content_1ssvj.navigation-bar__withCompactTitle_1ssvj > .navigation-bar__children_1ssvj,
60
- .navigation-bar__content_1ssvj.navigation-bar__withCompactTitle_1ssvj > .navigation-bar__title_1ssvj {
57
+ } .navigation-bar__content_5ow3j.navigation-bar__withBothAddons_5ow3j > .navigation-bar__children_5ow3j,
58
+ .navigation-bar__content_5ow3j.navigation-bar__withBothAddons_5ow3j > .navigation-bar__title_5ow3j,
59
+ .navigation-bar__content_5ow3j.navigation-bar__withCompactTitle_5ow3j > .navigation-bar__children_5ow3j,
60
+ .navigation-bar__content_5ow3j.navigation-bar__withCompactTitle_5ow3j > .navigation-bar__title_5ow3j {
61
61
  -webkit-line-clamp: 1;
62
62
  word-break: break-all;
63
- } .navigation-bar__content_1ssvj.navigation-bar__contentOnBotDesktop_1ssvj.navigation-bar__contentOnBotDesktop_1ssvj {
63
+ } .navigation-bar__content_5ow3j.navigation-bar__contentOnBotDesktop_5ow3j.navigation-bar__contentOnBotDesktop_5ow3j {
64
64
  padding-top: var(--gap-s);
65
- } .navigation-bar__content_1ssvj.navigation-bar__contentOnBotMobile_1ssvj.navigation-bar__contentOnBotMobile_1ssvj {
65
+ } .navigation-bar__content_5ow3j.navigation-bar__contentOnBotMobile_5ow3j.navigation-bar__contentOnBotMobile_5ow3j {
66
66
  padding-top: var(--gap-s);
67
- } .navigation-bar__title_1ssvj {
67
+ } .navigation-bar__title_5ow3j {
68
68
  word-break: break-word;
69
- } .navigation-bar__subtitle_1ssvj {
69
+ } .navigation-bar__subtitle_5ow3j {
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_1ssvj {
80
+ } .navigation-bar__addonsWrapper_5ow3j {
81
81
  display: flex;
82
- } .navigation-bar__rightAddons_1ssvj {
82
+ } .navigation-bar__rightAddons_5ow3j {
83
83
  margin-left: auto;
84
- } .navigation-bar__addon_1ssvj {
84
+ } .navigation-bar__addon_5ow3j {
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_1ssvj {
92
+ } .navigation-bar__bottomAddons_5ow3j {
93
93
  pointer-events: all;
94
- } .navigation-bar__closer_1ssvj {
94
+ } .navigation-bar__closer_5ow3j {
95
95
  margin-left: auto;
96
- } .navigation-bar__left_1ssvj {
96
+ } .navigation-bar__left_5ow3j {
97
97
  text-align: left;
98
- } .navigation-bar__center_1ssvj {
98
+ } .navigation-bar__center_5ow3j {
99
99
  text-align: center;
100
- } .navigation-bar__trim_1ssvj {
100
+ } .navigation-bar__trim_5ow3j {
101
101
  overflow: hidden
102
- } .navigation-bar__trim_1ssvj .navigation-bar__title_1ssvj,
103
- .navigation-bar__trim_1ssvj .navigation-bar__children_1ssvj {
102
+ } .navigation-bar__trim_5ow3j .navigation-bar__title_5ow3j,
103
+ .navigation-bar__trim_5ow3j .navigation-bar__children_5ow3j {
104
104
  -webkit-line-clamp: 2;
105
105
  display: -webkit-box;
106
106
  -webkit-box-orient: vertical;
package/index.js CHANGED
@@ -5,6 +5,7 @@ var components_closer_Component = require('./components/closer/Component.js');
5
5
  require('tslib');
6
6
  require('react');
7
7
  require('classnames');
8
+ require('@alfalab/hooks');
8
9
  require('./components/back-arrow-addon/Component.js');
9
10
  require('@alfalab/core-components-button');
10
11
  require('@alfalab/core-components-typography');
@@ -1,5 +1,6 @@
1
1
  import React, { useState, useRef, useEffect } from 'react';
2
2
  import cn from 'classnames';
3
+ import { useLayoutEffect_SAFE_FOR_SSR } from '@alfalab/hooks';
3
4
  import { BackArrowAddon } from './components/back-arrow-addon/Component.js';
4
5
  import { Closer } from './components/closer/Component.js';
5
6
  import '@alfalab/core-components-button/modern';
@@ -15,16 +16,19 @@ const getDataTestId = (dataTestId, element) => {
15
16
  return dataTestId ? `${dataTestId}${elementPart}` : undefined;
16
17
  };
17
18
 
18
- const styles = {"header":"navigation-bar__header_1ssvj","backgroundImage":"navigation-bar__backgroundImage_1ssvj","mainLine":"navigation-bar__mainLine_1ssvj","mainLineSticky":"navigation-bar__mainLineSticky_1ssvj","mainLineWithImageBg":"navigation-bar__mainLineWithImageBg_1ssvj","content":"navigation-bar__content_1ssvj","withBothAddons":"navigation-bar__withBothAddons_1ssvj","withCompactTitle":"navigation-bar__withCompactTitle_1ssvj","children":"navigation-bar__children_1ssvj","title":"navigation-bar__title_1ssvj","contentOnBotDesktop":"navigation-bar__contentOnBotDesktop_1ssvj","contentOnBotMobile":"navigation-bar__contentOnBotMobile_1ssvj","subtitle":"navigation-bar__subtitle_1ssvj","addonsWrapper":"navigation-bar__addonsWrapper_1ssvj","rightAddons":"navigation-bar__rightAddons_1ssvj","addon":"navigation-bar__addon_1ssvj","bottomAddons":"navigation-bar__bottomAddons_1ssvj","closer":"navigation-bar__closer_1ssvj","left":"navigation-bar__left_1ssvj","center":"navigation-bar__center_1ssvj","trim":"navigation-bar__trim_1ssvj"};
19
+ const styles = {"header":"navigation-bar__header_5ow3j","backgroundImage":"navigation-bar__backgroundImage_5ow3j","mainLine":"navigation-bar__mainLine_5ow3j","mainLineSticky":"navigation-bar__mainLineSticky_5ow3j","mainLineWithImageBg":"navigation-bar__mainLineWithImageBg_5ow3j","content":"navigation-bar__content_5ow3j","withBothAddons":"navigation-bar__withBothAddons_5ow3j","withCompactTitle":"navigation-bar__withCompactTitle_5ow3j","children":"navigation-bar__children_5ow3j","title":"navigation-bar__title_5ow3j","contentOnBotDesktop":"navigation-bar__contentOnBotDesktop_5ow3j","contentOnBotMobile":"navigation-bar__contentOnBotMobile_5ow3j","subtitle":"navigation-bar__subtitle_5ow3j","addonsWrapper":"navigation-bar__addonsWrapper_5ow3j","rightAddons":"navigation-bar__rightAddons_5ow3j","addon":"navigation-bar__addon_5ow3j","bottomAddons":"navigation-bar__bottomAddons_5ow3j","closer":"navigation-bar__closer_5ow3j","left":"navigation-bar__left_5ow3j","center":"navigation-bar__center_5ow3j","trim":"navigation-bar__trim_5ow3j"};
19
20
  require('./index.css')
20
21
 
21
22
  /* eslint-disable complexity */
22
23
  const ADDONS_HEIGHT = 48;
23
- 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, parentRef, sticky, onBack, }) => {
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, }) => {
24
25
  const [scrollTop, setScrollTop] = useState(0);
26
+ const [titleMargin, setTitleMargin] = useState({ left: 0, right: 0 });
25
27
  const bottomContentRef = useRef(null);
26
28
  const headerRef = useRef(null);
27
29
  const mainLinePaddingTopRef = useRef('0px');
30
+ const leftAddonsRef = useRef(null);
31
+ const rightAddonsRef = useRef(null);
28
32
  const compactTitle = view === 'mobile' && titleSize === 'compact';
29
33
  const hasLeftPart = Boolean(leftAddons || hasBackButton);
30
34
  const hasRightPart = Boolean(rightAddons || hasCloser);
@@ -37,8 +41,31 @@ const NavigationBar = ({ addonClassName, className, contentClassName, closerClas
37
41
  const showAnimatedContentOnTop = withAnimation && showContentOnBot && scrollTop > ADDONS_HEIGHT;
38
42
  const showAnimatedContentOnBot = withAnimation && showContentOnBot;
39
43
  const headerPaddingTop = mainLinePaddingTopRef.current;
44
+ useLayoutEffect_SAFE_FOR_SSR(() => {
45
+ if (align === 'center' && (showStaticContentOnTop || showAnimatedContentOnTop)) {
46
+ const leftAddonsWidth = leftAddonsRef.current?.offsetWidth || 0;
47
+ const rightAddonsWidth = rightAddonsRef.current?.offsetWidth || 0;
48
+ const marginSize = Math.abs(rightAddonsWidth - leftAddonsWidth);
49
+ const shouldAddLeftMargin = rightAddonsWidth - leftAddonsWidth > 0;
50
+ setTitleMargin((prev) => {
51
+ const newState = shouldAddLeftMargin
52
+ ? { left: marginSize, right: 0 }
53
+ : { left: 0, right: marginSize };
54
+ const isStateChanged = prev.left !== newState.left || prev.right !== newState.right;
55
+ return isStateChanged ? newState : prev;
56
+ });
57
+ }
58
+ }, [
59
+ align,
60
+ showStaticContentOnTop,
61
+ showAnimatedContentOnTop,
62
+ leftAddons,
63
+ rightAddons,
64
+ hasBackButton,
65
+ hasCloser,
66
+ ]);
40
67
  useEffect(() => {
41
- const parent = parentRef?.current;
68
+ const parent = scrollableParentRef?.current;
42
69
  const handleScroll = (ev) => {
43
70
  const divElement = ev.target;
44
71
  setScrollTop(divElement.scrollTop);
@@ -50,7 +77,7 @@ const NavigationBar = ({ addonClassName, className, contentClassName, closerClas
50
77
  parent.addEventListener('scroll', handleScroll);
51
78
  }
52
79
  return () => parent?.removeEventListener('scroll', handleScroll);
53
- }, [parentRef, withAnimation]);
80
+ }, [scrollableParentRef, withAnimation]);
54
81
  const renderBackButton = () => {
55
82
  let textOpacity = 1;
56
83
  if (withAnimation) {
@@ -91,18 +118,31 @@ const NavigationBar = ({ addonClassName, className, contentClassName, closerClas
91
118
  }
92
119
  : null),
93
120
  } },
94
- hasLeftPart && (React.createElement("div", { className: styles.addonsWrapper },
121
+ hasLeftPart && (React.createElement("div", { className: styles.addonsWrapper, ref: leftAddonsRef },
95
122
  hasBackButton && renderBackButton(),
96
123
  leftAddons && (React.createElement("div", { className: cn(styles.addon, addonClassName) }, leftAddons)))),
97
- showStaticContentOnTop && renderContent(),
124
+ showStaticContentOnTop &&
125
+ renderContent({
126
+ ...(align === 'center'
127
+ ? {
128
+ style: {
129
+ marginLeft: titleMargin.left,
130
+ marginRight: titleMargin.right,
131
+ },
132
+ }
133
+ : null),
134
+ }),
98
135
  showAnimatedContentOnTop &&
99
136
  renderContent({
100
137
  extraClassName: styles.withBothAddons,
101
138
  style: {
102
139
  opacity: Math.min(1, (scrollTop - ADDONS_HEIGHT) / ADDONS_HEIGHT),
140
+ ...(align === 'center'
141
+ ? { marginLeft: titleMargin.left, marginRight: titleMargin.right }
142
+ : null),
103
143
  },
104
144
  }),
105
- hasRightPart && (React.createElement("div", { className: cn(styles.addonsWrapper, styles.rightAddons) },
145
+ hasRightPart && (React.createElement("div", { className: cn(styles.addonsWrapper, styles.rightAddons), ref: rightAddonsRef },
106
146
  rightAddons && (React.createElement("div", { className: cn(styles.addon, addonClassName) }, rightAddons)),
107
147
  hasCloser && renderCloser()))),
108
148
  showAnimatedContentOnBot &&
@@ -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_17er7","mobileComponent":"navigation-bar__mobileComponent_17er7","flex":"navigation-bar__flex_17er7","iconWrapper":"navigation-bar__iconWrapper_17er7","text":"navigation-bar__text_17er7","mobileWrapper":"navigation-bar__mobileWrapper_17er7"};
8
+ const styles = {"component":"navigation-bar__component_swc35","mobileComponent":"navigation-bar__mobileComponent_swc35","flex":"navigation-bar__flex_swc35","iconWrapper":"navigation-bar__iconWrapper_swc35","text":"navigation-bar__text_swc35","mobileWrapper":"navigation-bar__mobileWrapper_swc35"};
9
9
  require('./index.css')
10
10
 
11
11
  const BackArrowAddon = ({ text = 'Назад', onClick, className, textOpacity = 1, view, ...htmlAttributes }) => {
@@ -1,4 +1,4 @@
1
- /* hash: 18yu8 */
1
+ /* hash: 27iuz */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-graphic-primary: #0b1f35;
@@ -24,46 +24,46 @@
24
24
  --gap-s: 12px;
25
25
  } :root {
26
26
  } :root {
27
- } .navigation-bar__component_17er7 {
27
+ } .navigation-bar__component_swc35 {
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_17er7 svg > path {
33
+ } .navigation-bar__component_swc35 svg > path {
34
34
  transition: fill 0.2s ease;
35
35
  fill: var(--color-light-graphic-primary);
36
- } .navigation-bar__component_17er7:hover svg > path {
36
+ } .navigation-bar__component_swc35:hover svg > path {
37
37
  fill: var(--color-light-graphic-primary-tint-20);
38
- } .navigation-bar__component_17er7:active svg > path {
38
+ } .navigation-bar__component_swc35:active svg > path {
39
39
  fill: var(--color-light-graphic-primary-tint-30);
40
- } .navigation-bar__mobileComponent_17er7 {
40
+ } .navigation-bar__mobileComponent_swc35 {
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_17er7 {
46
+ } .navigation-bar__flex_swc35 {
47
47
  display: flex;
48
48
  align-items: center;
49
- } .navigation-bar__iconWrapper_17er7 {
49
+ } .navigation-bar__iconWrapper_swc35 {
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_17er7 + .navigation-bar__text_17er7 {
56
+ } .navigation-bar__iconWrapper_swc35 + .navigation-bar__text_swc35 {
57
57
  margin-right: var(--gap-s);
58
- } .navigation-bar__mobileWrapper_17er7 {
58
+ } .navigation-bar__mobileWrapper_swc35 {
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_17er7 + .navigation-bar__text_17er7 {
65
+ } .navigation-bar__mobileWrapper_swc35 + .navigation-bar__text_swc35 {
66
66
  margin: 0 var(--gap-s) 0 var(--gap-xs);
67
- } .navigation-bar__mobileWrapper_17er7 svg > path {
67
+ } .navigation-bar__mobileWrapper_swc35 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_8p6nd","button":"navigation-bar__button_8p6nd","mobile":"navigation-bar__mobile_8p6nd","sticky":"navigation-bar__sticky_8p6nd"};
7
+ const styles = {"closer":"navigation-bar__closer_kmb9l","button":"navigation-bar__button_kmb9l","mobile":"navigation-bar__mobile_kmb9l","sticky":"navigation-bar__sticky_kmb9l"};
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: tfros */
1
+ /* hash: 1lpkd */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-graphic-primary: #0b1f35;
@@ -18,7 +18,7 @@
18
18
  } :root {
19
19
  } :root {
20
20
  } :root {
21
- } .navigation-bar__closer_8p6nd {
21
+ } .navigation-bar__closer_kmb9l {
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_8p6nd {
29
+ } .navigation-bar__button_kmb9l {
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_8p6nd.navigation-bar__mobile_8p6nd {
35
+ } .navigation-bar__button_kmb9l.navigation-bar__mobile_kmb9l {
36
36
  background: var(--color-light-specialbg-secondary-transparent);
37
37
  color: var(--color-light-graphic-secondary);
38
- } .navigation-bar__sticky_8p6nd {
38
+ } .navigation-bar__sticky_kmb9l {
39
39
  position: sticky;
40
40
  top: 0;
41
41
  }
package/modern/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: 72dgh */
1
+ /* hash: zc64y */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-text-primary: #0b1f35;
@@ -18,26 +18,26 @@
18
18
  --gap-s: 12px;
19
19
  } :root {
20
20
  } :root {
21
- } .navigation-bar__header_1ssvj {
21
+ } .navigation-bar__header_5ow3j {
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_1ssvj.navigation-bar__header_1ssvj.navigation-bar__backgroundImage_1ssvj {
25
+ } .navigation-bar__header_5ow3j.navigation-bar__header_5ow3j.navigation-bar__backgroundImage_5ow3j {
26
26
  background-repeat: no-repeat;
27
27
  background-position: center;
28
28
  background-size: cover;
29
- } .navigation-bar__mainLine_1ssvj {
29
+ } .navigation-bar__mainLine_5ow3j {
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_1ssvj {
35
+ } .navigation-bar__mainLineSticky_5ow3j {
36
36
  position: sticky;
37
37
  top: 0;
38
- } .navigation-bar__mainLineWithImageBg_1ssvj {
38
+ } .navigation-bar__mainLineWithImageBg_5ow3j {
39
39
  background-color: initial;
40
- } .navigation-bar__content_1ssvj {
40
+ } .navigation-bar__content_5ow3j {
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_1ssvj.navigation-bar__withBothAddons_1ssvj,
50
- .navigation-bar__content_1ssvj.navigation-bar__withCompactTitle_1ssvj {
49
+ } .navigation-bar__content_5ow3j.navigation-bar__withBothAddons_5ow3j,
50
+ .navigation-bar__content_5ow3j.navigation-bar__withCompactTitle_5ow3j {
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_1ssvj.navigation-bar__withBothAddons_1ssvj > .navigation-bar__children_1ssvj,
58
- .navigation-bar__content_1ssvj.navigation-bar__withBothAddons_1ssvj > .navigation-bar__title_1ssvj,
59
- .navigation-bar__content_1ssvj.navigation-bar__withCompactTitle_1ssvj > .navigation-bar__children_1ssvj,
60
- .navigation-bar__content_1ssvj.navigation-bar__withCompactTitle_1ssvj > .navigation-bar__title_1ssvj {
57
+ } .navigation-bar__content_5ow3j.navigation-bar__withBothAddons_5ow3j > .navigation-bar__children_5ow3j,
58
+ .navigation-bar__content_5ow3j.navigation-bar__withBothAddons_5ow3j > .navigation-bar__title_5ow3j,
59
+ .navigation-bar__content_5ow3j.navigation-bar__withCompactTitle_5ow3j > .navigation-bar__children_5ow3j,
60
+ .navigation-bar__content_5ow3j.navigation-bar__withCompactTitle_5ow3j > .navigation-bar__title_5ow3j {
61
61
  -webkit-line-clamp: 1;
62
62
  word-break: break-all;
63
- } .navigation-bar__content_1ssvj.navigation-bar__contentOnBotDesktop_1ssvj.navigation-bar__contentOnBotDesktop_1ssvj {
63
+ } .navigation-bar__content_5ow3j.navigation-bar__contentOnBotDesktop_5ow3j.navigation-bar__contentOnBotDesktop_5ow3j {
64
64
  padding-top: var(--gap-s);
65
- } .navigation-bar__content_1ssvj.navigation-bar__contentOnBotMobile_1ssvj.navigation-bar__contentOnBotMobile_1ssvj {
65
+ } .navigation-bar__content_5ow3j.navigation-bar__contentOnBotMobile_5ow3j.navigation-bar__contentOnBotMobile_5ow3j {
66
66
  padding-top: var(--gap-s);
67
- } .navigation-bar__title_1ssvj {
67
+ } .navigation-bar__title_5ow3j {
68
68
  word-break: break-word;
69
- } .navigation-bar__subtitle_1ssvj {
69
+ } .navigation-bar__subtitle_5ow3j {
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_1ssvj {
80
+ } .navigation-bar__addonsWrapper_5ow3j {
81
81
  display: flex;
82
- } .navigation-bar__rightAddons_1ssvj {
82
+ } .navigation-bar__rightAddons_5ow3j {
83
83
  margin-left: auto;
84
- } .navigation-bar__addon_1ssvj {
84
+ } .navigation-bar__addon_5ow3j {
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_1ssvj {
92
+ } .navigation-bar__bottomAddons_5ow3j {
93
93
  pointer-events: all;
94
- } .navigation-bar__closer_1ssvj {
94
+ } .navigation-bar__closer_5ow3j {
95
95
  margin-left: auto;
96
- } .navigation-bar__left_1ssvj {
96
+ } .navigation-bar__left_5ow3j {
97
97
  text-align: left;
98
- } .navigation-bar__center_1ssvj {
98
+ } .navigation-bar__center_5ow3j {
99
99
  text-align: center;
100
- } .navigation-bar__trim_1ssvj {
100
+ } .navigation-bar__trim_5ow3j {
101
101
  overflow: hidden
102
- } .navigation-bar__trim_1ssvj .navigation-bar__title_1ssvj,
103
- .navigation-bar__trim_1ssvj .navigation-bar__children_1ssvj {
102
+ } .navigation-bar__trim_5ow3j .navigation-bar__title_5ow3j,
103
+ .navigation-bar__trim_5ow3j .navigation-bar__children_5ow3j {
104
104
  -webkit-line-clamp: 2;
105
105
  display: -webkit-box;
106
106
  -webkit-box-orient: vertical;
package/modern/index.js CHANGED
@@ -2,6 +2,7 @@ export { NavigationBar } from './Component.js';
2
2
  export { Closer } from './components/closer/Component.js';
3
3
  import 'react';
4
4
  import 'classnames';
5
+ import '@alfalab/hooks';
5
6
  import './components/back-arrow-addon/Component.js';
6
7
  import '@alfalab/core-components-button/modern';
7
8
  import '@alfalab/core-components-typography/modern';
package/modern/types.d.ts CHANGED
@@ -100,9 +100,9 @@ type NavigationBarProps = {
100
100
  */
101
101
  view: 'desktop' | 'mobile';
102
102
  /**
103
- * Ссылка на родительскую ноду.
103
+ * Ссылка на родительскую ноду overflow: auto
104
104
  */
105
- parentRef?: React.RefObject<HTMLDivElement>;
105
+ scrollableParentRef?: React.RefObject<HTMLDivElement>;
106
106
  };
107
107
  type ContentParams = {
108
108
  extraClassName?: string;