@alfalab/core-components-side-panel 5.0.0 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/Component.responsive.js +4 -4
  2. package/components/content/Component.desktop.js +3 -1
  3. package/components/content/Component.js +5 -2
  4. package/components/content/Component.mobile.js +3 -1
  5. package/components/content/desktop.css +3 -3
  6. package/components/content/index.css +4 -4
  7. package/components/content/mobile.css +3 -3
  8. package/components/controls/Component.js +5 -4
  9. package/components/controls/index.css +2 -2
  10. package/components/controls/index.js +2 -1
  11. package/components/footer/Component.desktop.js +4 -2
  12. package/components/footer/Component.js +6 -3
  13. package/components/footer/Component.mobile.js +4 -2
  14. package/components/footer/desktop.css +3 -3
  15. package/components/footer/index.css +4 -4
  16. package/components/footer/layout.css +17 -17
  17. package/components/footer/mobile.css +3 -3
  18. package/components/header/Component.js +6 -5
  19. package/components/header/desktop.css +5 -5
  20. package/components/header/index.css +14 -14
  21. package/components/header/mobile.css +4 -4
  22. package/cssm/Component.responsive.js +3 -3
  23. package/cssm/components/content/Component.desktop.js +2 -0
  24. package/cssm/components/content/Component.js +4 -1
  25. package/cssm/components/content/Component.mobile.js +2 -0
  26. package/cssm/components/controls/Component.js +3 -2
  27. package/cssm/components/controls/index.js +1 -0
  28. package/cssm/components/footer/Component.desktop.js +2 -0
  29. package/cssm/components/footer/Component.js +4 -1
  30. package/cssm/components/footer/Component.mobile.js +2 -0
  31. package/cssm/components/header/Component.js +3 -2
  32. package/cssm/desktop/Component.desktop.js +4 -3
  33. package/cssm/desktop/index.js +2 -1
  34. package/cssm/mobile/Component.mobile.js +4 -3
  35. package/cssm/mobile/index.js +2 -1
  36. package/cssm/typings.d.ts +1 -0
  37. package/desktop/Component.desktop.js +7 -6
  38. package/desktop/desktop.css +3 -3
  39. package/desktop/index.js +3 -2
  40. package/desktop/transitions.desktop.css +7 -7
  41. package/esm/Component.responsive.js +4 -4
  42. package/esm/components/content/Component.desktop.js +3 -1
  43. package/esm/components/content/Component.js +5 -2
  44. package/esm/components/content/Component.mobile.js +3 -1
  45. package/esm/components/content/desktop.css +3 -3
  46. package/esm/components/content/index.css +4 -4
  47. package/esm/components/content/mobile.css +3 -3
  48. package/esm/components/controls/Component.js +5 -4
  49. package/esm/components/controls/index.css +2 -2
  50. package/esm/components/controls/index.js +2 -1
  51. package/esm/components/footer/Component.desktop.js +4 -2
  52. package/esm/components/footer/Component.js +6 -3
  53. package/esm/components/footer/Component.mobile.js +4 -2
  54. package/esm/components/footer/desktop.css +3 -3
  55. package/esm/components/footer/index.css +4 -4
  56. package/esm/components/footer/layout.css +17 -17
  57. package/esm/components/footer/mobile.css +3 -3
  58. package/esm/components/header/Component.js +6 -5
  59. package/esm/components/header/desktop.css +5 -5
  60. package/esm/components/header/index.css +14 -14
  61. package/esm/components/header/mobile.css +4 -4
  62. package/esm/desktop/Component.desktop.js +7 -6
  63. package/esm/desktop/desktop.css +3 -3
  64. package/esm/desktop/index.js +3 -2
  65. package/esm/desktop/transitions.desktop.css +7 -7
  66. package/esm/index.js +1 -1
  67. package/esm/layout.module-31951bef.js +4 -0
  68. package/esm/mobile/Component.mobile.js +8 -7
  69. package/esm/mobile/index.js +3 -2
  70. package/esm/mobile/mobile.css +4 -4
  71. package/esm/mobile/transitions.mobile.css +8 -8
  72. package/esm/typings.d.ts +1 -0
  73. package/index.js +1 -1
  74. package/layout.module-2f71de49.js +6 -0
  75. package/mobile/Component.mobile.js +7 -6
  76. package/mobile/index.js +3 -2
  77. package/mobile/mobile.css +4 -4
  78. package/mobile/transitions.mobile.css +8 -8
  79. package/modern/Component.responsive.js +4 -4
  80. package/modern/components/content/Component.desktop.js +3 -1
  81. package/modern/components/content/Component.js +5 -2
  82. package/modern/components/content/Component.mobile.js +3 -1
  83. package/modern/components/content/desktop.css +3 -3
  84. package/modern/components/content/index.css +4 -4
  85. package/modern/components/content/mobile.css +3 -3
  86. package/modern/components/controls/Component.js +5 -4
  87. package/modern/components/controls/index.css +2 -2
  88. package/modern/components/controls/index.js +2 -1
  89. package/modern/components/footer/Component.desktop.js +4 -2
  90. package/modern/components/footer/Component.js +6 -3
  91. package/modern/components/footer/Component.mobile.js +4 -2
  92. package/modern/components/footer/desktop.css +3 -3
  93. package/modern/components/footer/index.css +4 -4
  94. package/modern/components/footer/layout.css +17 -17
  95. package/modern/components/footer/mobile.css +3 -3
  96. package/modern/components/header/Component.js +6 -5
  97. package/modern/components/header/desktop.css +5 -5
  98. package/modern/components/header/index.css +14 -14
  99. package/modern/components/header/mobile.css +4 -4
  100. package/modern/desktop/Component.desktop.js +7 -6
  101. package/modern/desktop/desktop.css +3 -3
  102. package/modern/desktop/index.js +3 -2
  103. package/modern/desktop/transitions.desktop.css +7 -7
  104. package/modern/index.js +1 -1
  105. package/modern/layout.module-a8ffdbd1.js +4 -0
  106. package/modern/mobile/Component.mobile.js +8 -7
  107. package/modern/mobile/index.js +3 -2
  108. package/modern/mobile/mobile.css +4 -4
  109. package/modern/mobile/transitions.mobile.css +8 -8
  110. package/modern/typings.d.ts +1 -0
  111. package/package.json +5 -5
  112. package/src/Component.responsive.tsx +16 -3
  113. package/src/components/content/Component.tsx +5 -1
  114. package/src/components/controls/Component.tsx +4 -1
  115. package/src/components/footer/Component.tsx +5 -1
  116. package/src/components/header/Component.tsx +3 -1
  117. package/src/desktop/Component.desktop.tsx +4 -2
  118. package/src/mobile/Component.mobile.tsx +8 -4
  119. package/src/typings.ts +1 -0
  120. package/typings.d.ts +1 -0
  121. package/esm/layout.module-39750ede.js +0 -4
  122. package/layout.module-9de5161f.js +0 -6
  123. package/modern/layout.module-36042bae.js +0 -4
@@ -8,19 +8,20 @@ import { FooterDesktop } from '../components/footer/Component.desktop.js';
8
8
  import { Header } from '../components/header/Component.js';
9
9
  import { ResponsiveContext } from '../ResponsiveContext.js';
10
10
  import '../components/content/Component.js';
11
+ import '@alfalab/core-components-shared/modern';
11
12
  import '../Context.js';
12
13
  import '@alfalab/core-components-base-modal/modern';
13
- import '../layout.module-36042bae.js';
14
+ import '../layout.module-a8ffdbd1.js';
14
15
  import '../components/footer/Component.js';
15
16
  import '@alfalab/core-components-navigation-bar/modern';
16
17
 
17
- const styles = {"s":"side-panel__s_7ub5v","hidden":"side-panel__hidden_7ub5v"};
18
+ const styles = {"s":"side-panel__s_1nqpu","hidden":"side-panel__hidden_1nqpu"};
18
19
  require('./desktop.css')
19
20
 
20
- const transitions = {"enterRight":"side-panel__enterRight_boza3","enterLeft":"side-panel__enterLeft_boza3","enterActive":"side-panel__enterActive_boza3","exit":"side-panel__exit_boza3","exitActiveRight":"side-panel__exitActiveRight_boza3","exitActiveLeft":"side-panel__exitActiveLeft_boza3"};
21
+ const transitions = {"enterRight":"side-panel__enterRight_74yrs","enterLeft":"side-panel__enterLeft_74yrs","enterActive":"side-panel__enterActive_74yrs","exit":"side-panel__exit_74yrs","exitActiveRight":"side-panel__exitActiveRight_74yrs","exitActiveLeft":"side-panel__exitActiveLeft_74yrs"};
21
22
  require('./transitions.desktop.css')
22
23
 
23
- const SidePanelDesktopComponent = forwardRef(({ size = 's', children, className, wrapperClassName, contentTransitionProps = {}, backdropProps, placement = 'right', ...restProps }, ref) => {
24
+ const SidePanelDesktopComponent = forwardRef(({ size = 's', children, className, wrapperClassName, contentTransitionProps = {}, backdropProps, placement = 'right', dataTestId, ...restProps }, ref) => {
24
25
  const responsiveContext = useContext(ResponsiveContext);
25
26
  const modalRef = useRef(null);
26
27
  const enterCn = cn({
@@ -31,8 +32,8 @@ const SidePanelDesktopComponent = forwardRef(({ size = 's', children, className,
31
32
  [transitions.exitActiveRight]: placement === 'right',
32
33
  [transitions.exitActiveLeft]: placement === 'left',
33
34
  });
34
- const contextValue = React.useMemo(() => ({ size, view: 'desktop' }), [size]);
35
- const renderContent = () => (React.createElement(Drawer, { ...restProps, ref: mergeRefs([ref, modalRef]), placement: placement, wrapperClassName: wrapperClassName, className: cn(className, styles[size], styles.hidden), backdropProps: backdropProps, contentTransitionProps: {
35
+ const contextValue = React.useMemo(() => ({ size, view: 'desktop', dataTestId }), [size, dataTestId]);
36
+ const renderContent = () => (React.createElement(Drawer, { ...restProps, dataTestId: dataTestId, ref: mergeRefs([ref, modalRef]), placement: placement, wrapperClassName: wrapperClassName, className: cn(className, styles[size], styles.hidden), backdropProps: backdropProps, contentTransitionProps: {
36
37
  classNames: {
37
38
  appear: enterCn,
38
39
  enter: enterCn,
@@ -1,4 +1,4 @@
1
- /* hash: 1thkt */
1
+ /* hash: 1omtc */
2
2
  :root {
3
3
  } /* deprecated */ :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
4
4
  } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -28,8 +28,8 @@
28
28
  /* mobile */
29
29
 
30
30
  /* paddings */
31
- } .side-panel__s_7ub5v.side-panel__s_7ub5v {
31
+ } .side-panel__s_1nqpu.side-panel__s_1nqpu {
32
32
  width: var(--side-panel-s-width);
33
- } .side-panel__hidden_7ub5v {
33
+ } .side-panel__hidden_1nqpu {
34
34
  overflow-x: hidden;
35
35
  }
@@ -5,11 +5,12 @@ import 'classnames';
5
5
  import '@alfalab/core-components-drawer/modern';
6
6
  import '../components/content/Component.desktop.js';
7
7
  import '../components/content/Component.js';
8
+ import '@alfalab/core-components-shared/modern';
8
9
  import '../Context.js';
9
10
  import '@alfalab/core-components-base-modal/modern';
10
- import '../components/controls/Component.js';
11
11
  import '../ResponsiveContext.js';
12
- import '../layout.module-36042bae.js';
12
+ import '../components/controls/Component.js';
13
+ import '../layout.module-a8ffdbd1.js';
13
14
  import '../components/footer/Component.desktop.js';
14
15
  import '../components/footer/Component.js';
15
16
  import '../components/header/Component.js';
@@ -1,32 +1,32 @@
1
- /* hash: 1lsy6 */
2
- .side-panel__enterRight_boza3 {
1
+ /* hash: 10z53 */
2
+ .side-panel__enterRight_74yrs {
3
3
  opacity: 0;
4
4
  transform: translateX(15px);
5
5
  }
6
6
 
7
- .side-panel__enterLeft_boza3 {
7
+ .side-panel__enterLeft_74yrs {
8
8
  opacity: 0;
9
9
  transform: translateX(-15px);
10
10
  }
11
11
 
12
- .side-panel__enterActive_boza3 {
12
+ .side-panel__enterActive_74yrs {
13
13
  opacity: 1;
14
14
  transform: translateX(0);
15
15
  transition: opacity 200ms ease-in, transform 200ms ease-in;
16
16
  }
17
17
 
18
- .side-panel__exit_boza3 {
18
+ .side-panel__exit_74yrs {
19
19
  opacity: 1;
20
20
  transform: translateX(0);
21
21
  }
22
22
 
23
- .side-panel__exitActiveRight_boza3 {
23
+ .side-panel__exitActiveRight_74yrs {
24
24
  opacity: 0;
25
25
  transition: opacity 200ms ease-out, transform 200ms ease-out;
26
26
  transform: translateX(15px);
27
27
  }
28
28
 
29
- .side-panel__exitActiveLeft_boza3 {
29
+ .side-panel__exitActiveLeft_74yrs {
30
30
  opacity: 0;
31
31
  transition: opacity 200ms ease-out, transform 200ms ease-out;
32
32
  transform: translateX(-15px);
package/modern/index.js CHANGED
@@ -5,7 +5,7 @@ import '@alfalab/core-components-shared/modern';
5
5
  import './components/controls/Component.js';
6
6
  import 'classnames';
7
7
  import './ResponsiveContext.js';
8
- import './layout.module-36042bae.js';
8
+ import './layout.module-a8ffdbd1.js';
9
9
  import './components/header/Component.js';
10
10
  import '@alfalab/core-components-navigation-bar/modern';
11
11
  import './Context.js';
@@ -0,0 +1,4 @@
1
+ const layoutStyles = {"column":"side-panel__column_16gdu","gap-16":"side-panel__gap-16_16gdu","gap-24":"side-panel__gap-24_16gdu","gap-32":"side-panel__gap-32_16gdu","start":"side-panel__start_16gdu","center":"side-panel__center_16gdu","space-between":"side-panel__space-between_16gdu"};
2
+ require('./components/footer/layout.css')
3
+
4
+ export { layoutStyles as l };
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useContext } from 'react';
1
+ import React, { forwardRef, useContext, useMemo } from 'react';
2
2
  import cn from 'classnames';
3
3
  import { BaseModal } from '@alfalab/core-components-base-modal/modern';
4
4
  import { ContentMobile } from '../components/content/Component.mobile.js';
@@ -7,21 +7,22 @@ import { FooterMobile } from '../components/footer/Component.mobile.js';
7
7
  import { Header } from '../components/header/Component.js';
8
8
  import { ResponsiveContext } from '../ResponsiveContext.js';
9
9
  import '../components/content/Component.js';
10
+ import '@alfalab/core-components-shared/modern';
10
11
  import '../Context.js';
11
- import '../layout.module-36042bae.js';
12
+ import '../layout.module-a8ffdbd1.js';
12
13
  import '../components/footer/Component.js';
13
14
  import '@alfalab/core-components-navigation-bar/modern';
14
15
 
15
- const styles = {"component":"side-panel__component_19aqa","mobileContent":"side-panel__mobileContent_19aqa"};
16
+ const styles = {"component":"side-panel__component_1050h","mobileContent":"side-panel__mobileContent_1050h"};
16
17
  require('./mobile.css')
17
18
 
18
- const transitions = {"appear":"side-panel__appear_8jtdc","enter":"side-panel__enter_8jtdc","appearActive":"side-panel__appearActive_8jtdc","enterActive":"side-panel__enterActive_8jtdc","exit":"side-panel__exit_8jtdc","exitActive":"side-panel__exitActive_8jtdc","exitDone":"side-panel__exitDone_8jtdc"};
19
+ const transitions = {"appear":"side-panel__appear_1lrki","enter":"side-panel__enter_1lrki","appearActive":"side-panel__appearActive_1lrki","enterActive":"side-panel__enterActive_1lrki","exit":"side-panel__exit_1lrki","exitActive":"side-panel__exitActive_1lrki","exitDone":"side-panel__exitDone_1lrki"};
19
20
  require('./transitions.mobile.css')
20
21
 
21
- const contextValue = { size: 's', view: 'mobile' };
22
- const SidePanelMobileComponent = forwardRef(({ children, className, transitionProps, ...restProps }, ref) => {
22
+ const SidePanelMobileComponent = forwardRef(({ children, className, transitionProps, dataTestId, ...restProps }, ref) => {
23
23
  const responsiveContext = useContext(ResponsiveContext);
24
- const renderContent = () => (React.createElement(BaseModal, { ...restProps, ref: ref, transitionProps: {
24
+ const contextValue = useMemo(() => ({ size: 's', view: 'mobile', dataTestId }), [dataTestId]);
25
+ const renderContent = () => (React.createElement(BaseModal, { ...restProps, dataTestId: dataTestId, ref: ref, transitionProps: {
25
26
  classNames: transitions,
26
27
  ...transitionProps,
27
28
  }, className: cn(className, styles.component), scrollHandler: 'content' },
@@ -4,10 +4,11 @@ import 'classnames';
4
4
  import '@alfalab/core-components-base-modal/modern';
5
5
  import '../components/content/Component.mobile.js';
6
6
  import '../components/content/Component.js';
7
+ import '@alfalab/core-components-shared/modern';
7
8
  import '../Context.js';
8
- import '../components/controls/Component.js';
9
9
  import '../ResponsiveContext.js';
10
- import '../layout.module-36042bae.js';
10
+ import '../components/controls/Component.js';
11
+ import '../layout.module-a8ffdbd1.js';
11
12
  import '../components/footer/Component.mobile.js';
12
13
  import '../components/footer/Component.js';
13
14
  import '../components/header/Component.js';
@@ -1,4 +1,4 @@
1
- /* hash: 1sy9t */
1
+ /* hash: uxsui */
2
2
  :root {
3
3
  } /* deprecated */ :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
4
4
  } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -27,17 +27,17 @@
27
27
  /* mobile */
28
28
 
29
29
  /* paddings */
30
- } .side-panel__component_19aqa {
30
+ } .side-panel__component_1050h {
31
31
  top: 0;
32
32
  height: 100%;
33
33
  width: 100%;
34
34
  overflow-x: hidden;
35
35
  overflow-y: auto;
36
36
  max-width: 600px;
37
- } .side-panel__component_19aqa.side-panel__component_19aqa {
37
+ } .side-panel__component_1050h.side-panel__component_1050h {
38
38
  position: fixed;
39
39
  flex: 1;
40
- } .side-panel__mobileContent_19aqa {
40
+ } .side-panel__mobileContent_1050h {
41
41
  display: flex;
42
42
  flex-direction: column;
43
43
  width: 100%;
@@ -1,24 +1,24 @@
1
- /* hash: 1m2o8 */
2
- .side-panel__appear_8jtdc,
3
- .side-panel__enter_8jtdc {
1
+ /* hash: ntku8 */
2
+ .side-panel__appear_1lrki,
3
+ .side-panel__enter_1lrki {
4
4
  opacity: 0;
5
5
  transform: translateY(15px);
6
6
  }
7
7
 
8
- .side-panel__appearActive_8jtdc,
9
- .side-panel__enterActive_8jtdc {
8
+ .side-panel__appearActive_1lrki,
9
+ .side-panel__enterActive_1lrki {
10
10
  opacity: 1;
11
11
  transform: translateY(0);
12
12
  transition: opacity 200ms ease-in, transform 200ms ease-in;
13
13
  }
14
14
 
15
- .side-panel__exit_8jtdc {
15
+ .side-panel__exit_1lrki {
16
16
  opacity: 1;
17
17
  transform: translateY(0);
18
18
  }
19
19
 
20
- .side-panel__exitActive_8jtdc,
21
- .side-panel__exitDone_8jtdc {
20
+ .side-panel__exitActive_1lrki,
21
+ .side-panel__exitDone_1lrki {
22
22
  opacity: 0;
23
23
  transform: translateY(15px);
24
24
  transition: opacity 200ms ease-out, transform 200ms ease-out;
@@ -2,5 +2,6 @@ type View = 'desktop' | 'mobile';
2
2
  type TResponsiveModalContext = {
3
3
  view: View;
4
4
  size: 's';
5
+ dataTestId?: string;
5
6
  } | null;
6
7
  export { View, TResponsiveModalContext };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-side-panel",
3
- "version": "5.0.0",
3
+ "version": "5.0.1",
4
4
  "description": "SidePanel component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -14,11 +14,11 @@
14
14
  "react": "^16.9.0 || ^17.0.1 || ^18.0.0"
15
15
  },
16
16
  "dependencies": {
17
- "@alfalab/core-components-base-modal": "^5.7.0",
18
- "@alfalab/core-components-drawer": "^5.0.6",
17
+ "@alfalab/core-components-base-modal": "^5.7.1",
18
+ "@alfalab/core-components-drawer": "^5.0.7",
19
19
  "@alfalab/core-components-mq": "^4.2.0",
20
- "@alfalab/core-components-navigation-bar": "^0.7.0",
21
- "@alfalab/core-components-shared": "^0.8.0",
20
+ "@alfalab/core-components-navigation-bar": "^0.8.0",
21
+ "@alfalab/core-components-shared": "^0.9.0",
22
22
  "classnames": "^2.3.1",
23
23
  "react-merge-refs": "^1.1.0",
24
24
  "tslib": "^2.4.0"
@@ -55,7 +55,17 @@ function createResponsive<DesktopType extends FC, MobileType extends FC>(
55
55
  }
56
56
 
57
57
  const SidePanelResponsiveComponent = forwardRef<HTMLDivElement, SidePanelResponsiveProps>(
58
- ({ children, breakpoint = 1024, size = 's', defaultMatchMediaValue, ...restProps }, ref) => {
58
+ (
59
+ {
60
+ children,
61
+ breakpoint = 1024,
62
+ size = 's',
63
+ defaultMatchMediaValue,
64
+ dataTestId,
65
+ ...restProps
66
+ },
67
+ ref,
68
+ ) => {
59
69
  const query = `(min-width: ${breakpoint}px)`;
60
70
  const getDefaultValue = () => (isClient() ? window.matchMedia(query).matches : false);
61
71
 
@@ -63,13 +73,16 @@ const SidePanelResponsiveComponent = forwardRef<HTMLDivElement, SidePanelRespons
63
73
 
64
74
  const view = isDesktop ? 'desktop' : 'mobile';
65
75
 
66
- const contextValue = useMemo<TResponsiveModalContext>(() => ({ view, size }), [view, size]);
76
+ const contextValue = useMemo<TResponsiveModalContext>(
77
+ () => ({ view, size, dataTestId }),
78
+ [view, size, dataTestId],
79
+ );
67
80
 
68
81
  const Component = isDesktop ? SidePanelDesktop : SidePanelMobile;
69
82
 
70
83
  return (
71
84
  <ResponsiveContext.Provider value={contextValue}>
72
- <Component ref={ref} size={size} {...restProps}>
85
+ <Component ref={ref} size={size} dataTestId={dataTestId} {...restProps}>
73
86
  {children}
74
87
  </Component>
75
88
  </ResponsiveContext.Provider>
@@ -1,7 +1,10 @@
1
1
  import React, { FC, ReactNode, Ref, useContext } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
+ import { getDataTestId } from '@alfalab/core-components-shared';
5
+
4
6
  import { ModalContext } from '../../Context';
7
+ import { ResponsiveContext } from '../../ResponsiveContext';
5
8
 
6
9
  import styles from './index.module.css';
7
10
 
@@ -24,6 +27,7 @@ export type ContentProps = {
24
27
 
25
28
  export const Content: FC<ContentProps> = ({ children, className, dataTestId }) => {
26
29
  const { contentRef, hasHeader } = useContext(ModalContext);
30
+ const responsiveContext = useContext(ResponsiveContext);
27
31
 
28
32
  return (
29
33
  <div
@@ -31,7 +35,7 @@ export const Content: FC<ContentProps> = ({ children, className, dataTestId }) =
31
35
  [styles.withHeader]: hasHeader,
32
36
  })}
33
37
  ref={contentRef as Ref<HTMLDivElement>}
34
- data-test-id={dataTestId}
38
+ data-test-id={dataTestId || getDataTestId(responsiveContext?.dataTestId, 'content')}
35
39
  >
36
40
  {children}
37
41
  </div>
@@ -1,6 +1,8 @@
1
1
  import React, { ReactNode, useContext } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
+ import { getDataTestId } from '@alfalab/core-components-shared';
5
+
4
6
  import { ResponsiveContext } from '../../ResponsiveContext';
5
7
 
6
8
  import layoutStyles from '../footer/layout.module.css';
@@ -43,7 +45,7 @@ export const Controls: React.FC<ControlsProps> = ({
43
45
  mobileLayout = layoutProp,
44
46
  }) => {
45
47
  const context = useContext(ResponsiveContext);
46
- const { view = 'desktop' } = context || {};
48
+ const { view = 'desktop', dataTestId } = context || {};
47
49
 
48
50
  const layout = view === 'mobile' ? mobileLayout : layoutProp;
49
51
 
@@ -51,6 +53,7 @@ export const Controls: React.FC<ControlsProps> = ({
51
53
 
52
54
  return (
53
55
  <div
56
+ data-test-id={getDataTestId(dataTestId, 'controls')}
54
57
  className={cn(
55
58
  styles.component,
56
59
  layoutStyles[layout],
@@ -1,7 +1,10 @@
1
1
  import React, { FC, ReactNode, useContext, useEffect } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
+ import { getDataTestId } from '@alfalab/core-components-shared';
5
+
4
6
  import { ModalContext } from '../../Context';
7
+ import { ResponsiveContext } from '../../ResponsiveContext';
5
8
 
6
9
  import styles from './index.module.css';
7
10
  import layoutStyles from './layout.module.css';
@@ -47,6 +50,7 @@ export const Footer: FC<FooterProps> = ({
47
50
  dataTestId,
48
51
  }) => {
49
52
  const { footerHighlighted, setHasFooter } = useContext(ModalContext);
53
+ const responsiveContext = useContext(ResponsiveContext);
50
54
 
51
55
  useEffect(() => {
52
56
  setHasFooter(true);
@@ -64,7 +68,7 @@ export const Footer: FC<FooterProps> = ({
64
68
  [styles.sticky]: sticky,
65
69
  },
66
70
  )}
67
- data-test-id={dataTestId}
71
+ data-test-id={dataTestId || getDataTestId(responsiveContext?.dataTestId, 'footer')}
68
72
  >
69
73
  {children}
70
74
  </div>
@@ -2,6 +2,7 @@ import React, { FC, useContext, useEffect } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { NavigationBar, NavigationBarProps } from '@alfalab/core-components-navigation-bar';
5
+ import { getDataTestId } from '@alfalab/core-components-shared';
5
6
 
6
7
  import { ModalContext } from '../../Context';
7
8
  import { ResponsiveContext } from '../../ResponsiveContext';
@@ -22,7 +23,7 @@ export const Header: FC<HeaderProps> = ({
22
23
  ...restProps
23
24
  }) => {
24
25
  const { setHasHeader, headerHighlighted, onClose, componentRef } = useContext(ModalContext);
25
- const { size = 's', view = 'desktop' } = useContext(ResponsiveContext) || {};
26
+ const { size = 's', view = 'desktop', dataTestId } = useContext(ResponsiveContext) || {};
26
27
 
27
28
  useEffect(() => {
28
29
  setHasHeader(true);
@@ -33,6 +34,7 @@ export const Header: FC<HeaderProps> = ({
33
34
  return (
34
35
  <NavigationBar
35
36
  {...restProps}
37
+ dataTestId={getDataTestId(dataTestId, 'header')}
36
38
  scrollableParentRef={componentRef}
37
39
  view={view}
38
40
  sticky={sticky}
@@ -40,6 +40,7 @@ const SidePanelDesktopComponent = forwardRef<HTMLDivElement, SidePanelDesktopPro
40
40
  contentTransitionProps = {},
41
41
  backdropProps,
42
42
  placement = 'right',
43
+ dataTestId,
43
44
  ...restProps
44
45
  },
45
46
  ref,
@@ -58,13 +59,14 @@ const SidePanelDesktopComponent = forwardRef<HTMLDivElement, SidePanelDesktopPro
58
59
  });
59
60
 
60
61
  const contextValue = React.useMemo<TResponsiveModalContext>(
61
- () => ({ size, view: 'desktop' }),
62
- [size],
62
+ () => ({ size, view: 'desktop', dataTestId }),
63
+ [size, dataTestId],
63
64
  );
64
65
 
65
66
  const renderContent = () => (
66
67
  <Drawer
67
68
  {...restProps}
69
+ dataTestId={dataTestId}
68
70
  ref={mergeRefs([ref, modalRef])}
69
71
  placement={placement}
70
72
  wrapperClassName={wrapperClassName}
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useContext } from 'react';
1
+ import React, { forwardRef, useContext, useMemo } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { BaseModal, BaseModalProps } from '@alfalab/core-components-base-modal';
@@ -8,6 +8,7 @@ import { Controls, ControlsProps } from '../components/controls';
8
8
  import { FooterMobile } from '../components/footer/Component.mobile';
9
9
  import { Header } from '../components/header/Component';
10
10
  import { ResponsiveContext } from '../ResponsiveContext';
11
+ import { TResponsiveModalContext } from '../typings';
11
12
 
12
13
  import styles from './mobile.module.css';
13
14
  import transitions from './transitions.mobile.module.css';
@@ -20,15 +21,18 @@ export type SidePanelMobileProps = BaseModalProps & {
20
21
  hasCloser?: boolean;
21
22
  };
22
23
 
23
- const contextValue = { size: 's', view: 'mobile' } as const;
24
-
25
24
  const SidePanelMobileComponent = forwardRef<HTMLDivElement, SidePanelMobileProps>(
26
- ({ children, className, transitionProps, ...restProps }, ref) => {
25
+ ({ children, className, transitionProps, dataTestId, ...restProps }, ref) => {
27
26
  const responsiveContext = useContext(ResponsiveContext);
27
+ const contextValue = useMemo<TResponsiveModalContext>(
28
+ () => ({ size: 's', view: 'mobile', dataTestId }),
29
+ [dataTestId],
30
+ );
28
31
 
29
32
  const renderContent = () => (
30
33
  <BaseModal
31
34
  {...restProps}
35
+ dataTestId={dataTestId}
32
36
  ref={ref}
33
37
  transitionProps={{
34
38
  classNames: transitions,
package/src/typings.ts CHANGED
@@ -3,4 +3,5 @@ export type View = 'desktop' | 'mobile';
3
3
  export type TResponsiveModalContext = {
4
4
  view: View;
5
5
  size: 's';
6
+ dataTestId?: string;
6
7
  } | null;
package/typings.d.ts CHANGED
@@ -2,5 +2,6 @@ type View = 'desktop' | 'mobile';
2
2
  type TResponsiveModalContext = {
3
3
  view: View;
4
4
  size: 's';
5
+ dataTestId?: string;
5
6
  } | null;
6
7
  export { View, TResponsiveModalContext };
@@ -1,4 +0,0 @@
1
- var layoutStyles = {"column":"side-panel__column_1465d","gap-16":"side-panel__gap-16_1465d","gap-24":"side-panel__gap-24_1465d","gap-32":"side-panel__gap-32_1465d","start":"side-panel__start_1465d","center":"side-panel__center_1465d","space-between":"side-panel__space-between_1465d"};
2
- require('./components/footer/layout.css')
3
-
4
- export { layoutStyles as l };
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var layoutStyles = {"column":"side-panel__column_1465d","gap-16":"side-panel__gap-16_1465d","gap-24":"side-panel__gap-24_1465d","gap-32":"side-panel__gap-32_1465d","start":"side-panel__start_1465d","center":"side-panel__center_1465d","space-between":"side-panel__space-between_1465d"};
4
- require('./components/footer/layout.css')
5
-
6
- exports.layoutStyles = layoutStyles;
@@ -1,4 +0,0 @@
1
- const layoutStyles = {"column":"side-panel__column_1465d","gap-16":"side-panel__gap-16_1465d","gap-24":"side-panel__gap-24_1465d","gap-32":"side-panel__gap-32_1465d","start":"side-panel__start_1465d","center":"side-panel__center_1465d","space-between":"side-panel__space-between_1465d"};
2
- require('./components/footer/layout.css')
3
-
4
- export { layoutStyles as l };