@alfalab/core-components-bottom-sheet 6.6.1 → 6.7.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.
@@ -1,4 +1,4 @@
1
- /* hash: 1fskn */
1
+ /* hash: 1yadn */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-border-secondary: #e9e9eb; /* 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 */
@@ -27,42 +27,42 @@
27
27
  --bottom-sheet-title-font-weight: 700;
28
28
  --bottom-sheet-title-line-height: 24px;
29
29
  --bottom-sheet-title-font-family: var(--font-family-system);
30
- } .bottom-sheet__headerWrapper_1v92z {
30
+ } .bottom-sheet__headerWrapper_1t48d {
31
31
  padding: var(--gap-s) var(--gap-xs) var(--gap-2xs);
32
32
  border-top-right-radius: var(--border-radius-xl);
33
33
  border-top-left-radius: var(--border-radius-xl);
34
34
  z-index: 1;
35
- } .bottom-sheet__hasContent_1v92z {
35
+ } .bottom-sheet__hasContent_1t48d {
36
36
  background-color: inherit;
37
- } .bottom-sheet__header_1v92z {
37
+ } .bottom-sheet__header_1t48d {
38
38
  display: flex;
39
- } .bottom-sheet__sticky_1v92z {
39
+ } .bottom-sheet__sticky_1t48d {
40
40
  position: sticky;
41
41
  top: 0;
42
- } .bottom-sheet__highlighted_1v92z {
42
+ } .bottom-sheet__highlighted_1t48d {
43
43
  border-bottom: var(--bottom-sheet-header-border-bottom);
44
- } .bottom-sheet__justifyEnd_1v92z {
44
+ } .bottom-sheet__justifyEnd_1t48d {
45
45
  justify-content: flex-end;
46
- } .bottom-sheet__addon_1v92z {
46
+ } .bottom-sheet__addon_1t48d {
47
47
  display: flex;
48
48
  justify-content: center;
49
49
  align-items: center;
50
50
  min-width: 48px;
51
51
  height: 48px;
52
- } .bottom-sheet__addonFixed_1v92z {
52
+ } .bottom-sheet__addonFixed_1t48d {
53
53
  position: fixed;
54
- } .bottom-sheet__title_1v92z {
54
+ } .bottom-sheet__title_1t48d {
55
55
  padding: var(--gap-s) var(--gap-xs);
56
56
  width: 100%;
57
57
  font-size: var(--bottom-sheet-title-font-size);
58
58
  font-weight: var(--bottom-sheet-title-font-weight);
59
59
  line-height: var(--bottom-sheet-title-line-height);
60
60
  font-family: var(--bottom-sheet-title-font-family);
61
- } .bottom-sheet__titleCenter_1v92z {
61
+ } .bottom-sheet__titleCenter_1t48d {
62
62
  text-align: center;
63
- } .bottom-sheet__titleLeft_1v92z {
63
+ } .bottom-sheet__titleLeft_1t48d {
64
64
  text-align: left;
65
- } .bottom-sheet__trimTitle_1v92z {
65
+ } .bottom-sheet__trimTitle_1t48d {
66
66
  white-space: nowrap;
67
67
  overflow: hidden;
68
68
  text-overflow: ellipsis;
package/modern/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: x87uh */
1
+ /* hash: ozuwp */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-bg-accent: #ef3124;
@@ -45,50 +45,51 @@
45
45
  } :root {
46
46
  --bottom-sheet-in-transition: transform 0.5s cubic-bezier(0.09, 0.91, 0.18, 0.99);
47
47
  --bottom-sheet-out-transition: transform 0.3s ease;
48
- } .bottom-sheet__modal_1qfi2 {
48
+ } .bottom-sheet__modal_3cpay {
49
49
  background-color: transparent;
50
50
  position: fixed;
51
51
  bottom: 0;
52
52
  width: 100%;
53
53
  max-width: 600px;
54
54
  pointer-events: none;
55
- } .bottom-sheet__wrapper_1qfi2 {
55
+ } .bottom-sheet__wrapper_3cpay {
56
56
  transform: translateY(100%);
57
- overflow: hidden;
58
57
  pointer-events: none;
59
58
  border-top-right-radius: var(--border-radius-xl);
60
59
  border-top-left-radius: var(--border-radius-xl);
61
60
  transition: border-radius 0.3s ease;
62
- } .bottom-sheet__fullscreen_1qfi2 {
61
+ } .bottom-sheet__fullscreen_3cpay {
63
62
  border-radius: 0;
64
- } .bottom-sheet__component_1qfi2 {
65
- overflow: hidden;
63
+ } .bottom-sheet__component_3cpay {
66
64
  position: relative;
67
65
  display: flex;
68
66
  flex-direction: column;
69
67
  border-radius: inherit;
70
68
  background-color: var(--color-light-bg-primary);
71
69
  pointer-events: all;
72
- } .bottom-sheet__withTransition_1qfi2 {
70
+ } .bottom-sheet__withTransition_3cpay {
73
71
  transition: var(--bottom-sheet-out-transition);
74
- } .bottom-sheet__scrollableContainer_1qfi2 {
72
+ } .bottom-sheet__scrollableContainer_3cpay {
75
73
  overflow: auto;
76
74
  display: flex;
77
75
  flex-direction: column;
78
76
  position: relative;
79
77
  height: 100%;
80
78
  background-color: inherit;
81
- } .bottom-sheet__marker_1qfi2 {
79
+ border-radius: inherit;
80
+ } .bottom-sheet__marker_3cpay {
82
81
  position: fixed;
83
82
  top: var(--gap-2xs);
84
- left: 50%;
83
+ right: 0;
84
+ left: 0;
85
+ z-index: 1000;
85
86
  width: 36px;
87
+ margin: 0 auto;
88
+ } .bottom-sheet__defaultMarker_3cpay {
86
89
  height: 4px;
87
90
  border-radius: var(--border-radius-xxl);
88
- transform: translateX(-50%);
89
91
  background-color: var(--color-light-graphic-quaternary);
90
- z-index: 1000;
91
- } .bottom-sheet__content_1qfi2 {
92
+ } .bottom-sheet__content_3cpay {
92
93
  position: relative;
93
94
  z-index: 0;
94
95
  display: flex;
@@ -97,73 +98,73 @@
97
98
  padding: 0 var(--gap-m);
98
99
  color: var(--color-light-text-primary);
99
100
  background-color: inherit;
100
- } .bottom-sheet__noHeader_1qfi2 {
101
+ } .bottom-sheet__noHeader_3cpay {
101
102
  padding-top: var(--gap-m);
102
- } .bottom-sheet__noFooter_1qfi2 {
103
+ } .bottom-sheet__noFooter_3cpay {
103
104
  padding-bottom: var(--gap-m);
104
- } .bottom-sheet__scrollLocked_1qfi2 {
105
+ } .bottom-sheet__scrollLocked_3cpay {
105
106
  overflow: hidden;
106
- } .bottom-sheet__hiddenScrollbar_1qfi2 {
107
+ } .bottom-sheet__hiddenScrollbar_3cpay {
107
108
  scrollbar-width: none
108
- } .bottom-sheet__hiddenScrollbar_1qfi2::-webkit-scrollbar {
109
+ } .bottom-sheet__hiddenScrollbar_3cpay::-webkit-scrollbar {
109
110
  width: 0;
110
111
  height: 0;
111
- } .bottom-sheet__disabledPointerEvents_1qfi2 {
112
+ } .bottom-sheet__disabledPointerEvents_3cpay {
112
113
  pointer-events: none;
113
- } .bottom-sheet__appear_1qfi2 .bottom-sheet__wrapper_1qfi2, .bottom-sheet__enter_1qfi2 .bottom-sheet__wrapper_1qfi2 {
114
+ } .bottom-sheet__appear_3cpay .bottom-sheet__wrapper_3cpay, .bottom-sheet__enter_3cpay .bottom-sheet__wrapper_3cpay {
114
115
  transition: none;
115
- } .bottom-sheet__appearActive_1qfi2 .bottom-sheet__wrapper_1qfi2, .bottom-sheet__enterActive_1qfi2 .bottom-sheet__wrapper_1qfi2 {
116
+ } .bottom-sheet__appearActive_3cpay .bottom-sheet__wrapper_3cpay, .bottom-sheet__enterActive_3cpay .bottom-sheet__wrapper_3cpay {
116
117
  transition: var(--bottom-sheet-in-transition);
117
118
  transform: translateY(0);
118
- } .bottom-sheet__enterDone_1qfi2 .bottom-sheet__wrapper_1qfi2, .bottom-sheet__appearDone_1qfi2 .bottom-sheet__wrapper_1qfi2 {
119
+ } .bottom-sheet__enterDone_3cpay .bottom-sheet__wrapper_3cpay, .bottom-sheet__appearDone_3cpay .bottom-sheet__wrapper_3cpay {
119
120
  transform: translateY(0);
120
- } .bottom-sheet__exit_1qfi2 .bottom-sheet__wrapper_1qfi2 {
121
+ } .bottom-sheet__exit_3cpay .bottom-sheet__wrapper_3cpay {
121
122
  transform: translateY(0);
122
- } .bottom-sheet__exitActive_1qfi2 .bottom-sheet__wrapper_1qfi2 {
123
+ } .bottom-sheet__exitActive_3cpay .bottom-sheet__wrapper_3cpay {
123
124
  transition: var(--bottom-sheet-out-transition);
124
125
  transform: translateY(100%);
125
- } .bottom-sheet__background-accent_1qfi2 {
126
+ } .bottom-sheet__background-accent_3cpay {
126
127
  background-color: var(--color-light-bg-accent);
127
- } .bottom-sheet__background-info_1qfi2 {
128
+ } .bottom-sheet__background-info_3cpay {
128
129
  background-color: var(--color-light-bg-info);
129
- } .bottom-sheet__background-attention-muted_1qfi2 {
130
+ } .bottom-sheet__background-attention-muted_3cpay {
130
131
  background-color: var(--color-light-bg-attention-muted);
131
- } .bottom-sheet__background-positive-muted_1qfi2 {
132
+ } .bottom-sheet__background-positive-muted_3cpay {
132
133
  background-color: var(--color-light-bg-positive-muted);
133
- } .bottom-sheet__background-negative-muted_1qfi2 {
134
+ } .bottom-sheet__background-negative-muted_3cpay {
134
135
  background-color: var(--color-light-bg-negative-muted);
135
- } .bottom-sheet__background-primary_1qfi2 {
136
+ } .bottom-sheet__background-primary_3cpay {
136
137
  background-color: var(--color-light-bg-primary);
137
- } .bottom-sheet__background-primary-inverted_1qfi2 {
138
+ } .bottom-sheet__background-primary-inverted_3cpay {
138
139
  background-color: var(--color-light-bg-primary-inverted);
139
- } .bottom-sheet__background-secondary_1qfi2 {
140
+ } .bottom-sheet__background-secondary_3cpay {
140
141
  background-color: var(--color-light-bg-secondary);
141
- } .bottom-sheet__background-secondary-inverted_1qfi2 {
142
+ } .bottom-sheet__background-secondary-inverted_3cpay {
142
143
  background-color: var(--color-light-bg-secondary-inverted);
143
- } .bottom-sheet__background-tertiary_1qfi2 {
144
+ } .bottom-sheet__background-tertiary_3cpay {
144
145
  background-color: var(--color-light-bg-tertiary);
145
- } .bottom-sheet__background-tertiary-inverted_1qfi2 {
146
+ } .bottom-sheet__background-tertiary-inverted_3cpay {
146
147
  background-color: var(--color-light-bg-tertiary-inverted);
147
- } .bottom-sheet__background-quaternary_1qfi2 {
148
+ } .bottom-sheet__background-quaternary_3cpay {
148
149
  background-color: var(--color-light-bg-quaternary);
149
- } .bottom-sheet__background-quaternary-inverted_1qfi2 {
150
+ } .bottom-sheet__background-quaternary-inverted_3cpay {
150
151
  background-color: var(--color-light-bg-quaternary-inverted);
151
- } .bottom-sheet__background-specialbg-component_1qfi2 {
152
+ } .bottom-sheet__background-specialbg-component_3cpay {
152
153
  background-color: var(--color-light-specialbg-component);
153
- } .bottom-sheet__background-specialbg-component-inverted_1qfi2 {
154
+ } .bottom-sheet__background-specialbg-component-inverted_3cpay {
154
155
  background-color: var(--color-light-specialbg-component-inverted);
155
- } .bottom-sheet__background-specialbg-primary-grouped_1qfi2 {
156
+ } .bottom-sheet__background-specialbg-primary-grouped_3cpay {
156
157
  background-color: var(--color-light-specialbg-primary-grouped);
157
- } .bottom-sheet__background-specialbg-secondary-grouped_1qfi2 {
158
+ } .bottom-sheet__background-specialbg-secondary-grouped_3cpay {
158
159
  background-color: var(--color-light-specialbg-secondary-grouped);
159
- } .bottom-sheet__background-specialbg-tertiary-grouped_1qfi2 {
160
+ } .bottom-sheet__background-specialbg-tertiary-grouped_3cpay {
160
161
  background-color: var(--color-light-specialbg-tertiary-grouped);
161
- } .bottom-sheet__background-specialbg-secondary-transparent_1qfi2 {
162
+ } .bottom-sheet__background-specialbg-secondary-transparent_3cpay {
162
163
  background-color: var(--color-light-specialbg-secondary-transparent);
163
- } .bottom-sheet__background-specialbg-secondary-transparent-inverted_1qfi2 {
164
+ } .bottom-sheet__background-specialbg-secondary-transparent-inverted_3cpay {
164
165
  background-color: var(--color-light-specialbg-secondary-transparent-inverted);
165
- } .bottom-sheet__background-specialbg-tertiary-transparent_1qfi2 {
166
+ } .bottom-sheet__background-specialbg-tertiary-transparent_3cpay {
166
167
  background-color: var(--color-light-specialbg-tertiary-transparent);
167
- } .bottom-sheet__background-specialbg-tertiary-transparent-inverted_1qfi2 {
168
+ } .bottom-sheet__background-specialbg-tertiary-transparent-inverted_3cpay {
168
169
  background-color: var(--color-light-specialbg-tertiary-transparent-inverted);
169
170
  }
package/modern/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react-transition-group" />
2
- import { HTMLAttributes, ReactNode, RefObject } from 'react';
2
+ import { HTMLAttributes, ReactElement, ReactNode, RefObject } from 'react';
3
3
  import { TransitionProps } from 'react-transition-group/Transition';
4
4
  import { BaseModalProps } from "@alfalab/core-components-base-modal";
5
5
  import { NavigationBarProps } from "@alfalab/core-components-navigation-bar";
@@ -88,6 +88,14 @@ type BottomSheetProps = {
88
88
  * Дополнительный класс для обертки модального окна
89
89
  */
90
90
  modalWrapperClassName?: string;
91
+ /**
92
+ * Дополнительный класс для маркера
93
+ */
94
+ swipeableMarkerClassName?: string;
95
+ /**
96
+ * Кастомный маркер
97
+ */
98
+ swipeableMarker?: ReactElement;
91
99
  /**
92
100
  * TransitionProps, прокидываются в компонент CSSTransitionProps.
93
101
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-bottom-sheet",
3
- "version": "6.6.1",
3
+ "version": "6.7.0",
4
4
  "description": "Bottom sheet mobile component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -17,7 +17,7 @@
17
17
  "dependencies": {
18
18
  "@alfalab/core-components-backdrop": "^3.1.0",
19
19
  "@alfalab/core-components-base-modal": "^5.4.0",
20
- "@alfalab/core-components-navigation-bar": "^0.5.0",
20
+ "@alfalab/core-components-navigation-bar": "^0.5.2",
21
21
  "@alfalab/core-components-shared": "^0.2.0",
22
22
  "classnames": "^2.3.1",
23
23
  "react-div-100vh": "^0.7.0",
package/src/component.tsx CHANGED
@@ -93,6 +93,8 @@ export const BottomSheet = forwardRef<HTMLDivElement, BottomSheetProps>(
93
93
  keepMounted,
94
94
  onMagnetizeEnd,
95
95
  onOffsetChange,
96
+ swipeableMarker,
97
+ swipeableMarkerClassName,
96
98
  },
97
99
  ref,
98
100
  ) => {
@@ -467,6 +469,30 @@ export const BottomSheet = forwardRef<HTMLDivElement, BottomSheetProps>(
467
469
  maxHeight: isFirstRender ? 0 : `${lastMagneticArea}px`,
468
470
  });
469
471
 
472
+ const renderMarker = () => {
473
+ if (swipeable) {
474
+ if (swipeableMarker) {
475
+ return (
476
+ <div className={cn(styles.marker, swipeableMarkerClassName)}>
477
+ {swipeableMarker}
478
+ </div>
479
+ );
480
+ }
481
+
482
+ return (
483
+ <div
484
+ className={cn(
485
+ styles.marker,
486
+ styles.defaultMarker,
487
+ swipeableMarkerClassName,
488
+ )}
489
+ />
490
+ );
491
+ }
492
+
493
+ return null;
494
+ };
495
+
470
496
  const bgClassName = backgroundColor && styles[`background-${backgroundColor}`];
471
497
 
472
498
  return (
@@ -528,6 +554,7 @@ export const BottomSheet = forwardRef<HTMLDivElement, BottomSheetProps>(
528
554
  ref={mergeRefs([sheetRef, sheetContainerRef, sheetSwipeableHandlers.ref])}
529
555
  onTransitionEnd={handleTransitionEnd}
530
556
  >
557
+ {renderMarker()}
531
558
  <div
532
559
  {...containerProps}
533
560
  className={cn(
@@ -541,8 +568,6 @@ export const BottomSheet = forwardRef<HTMLDivElement, BottomSheetProps>(
541
568
  )}
542
569
  ref={mergeRefs([scrollableContainer, scrollableContainerRef])}
543
570
  >
544
- {swipeable && <div className={cn(styles.marker)} />}
545
-
546
571
  {!hideHeader && !emptyHeader && <Header {...headerProps} />}
547
572
 
548
573
  <div
@@ -16,7 +16,6 @@
16
16
 
17
17
  .wrapper {
18
18
  transform: translateY(100%);
19
- overflow: hidden;
20
19
  pointer-events: none;
21
20
  border-top-right-radius: var(--border-radius-xl);
22
21
  border-top-left-radius: var(--border-radius-xl);
@@ -28,7 +27,6 @@
28
27
  }
29
28
 
30
29
  .component {
31
- overflow: hidden;
32
30
  position: relative;
33
31
  display: flex;
34
32
  flex-direction: column;
@@ -48,18 +46,23 @@
48
46
  position: relative;
49
47
  height: 100%;
50
48
  background-color: inherit;
49
+ border-radius: inherit;
51
50
  }
52
51
 
53
52
  .marker {
54
53
  position: fixed;
55
54
  top: var(--gap-2xs);
56
- left: 50%;
55
+ right: 0;
56
+ left: 0;
57
+ z-index: 1000;
57
58
  width: 36px;
59
+ margin: 0 auto;
60
+ }
61
+
62
+ .defaultMarker {
58
63
  height: 4px;
59
64
  border-radius: var(--border-radius-xxl);
60
- transform: translateX(-50%);
61
65
  background-color: var(--color-light-graphic-quaternary);
62
- z-index: 1000;
63
66
  }
64
67
 
65
68
  .content {
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { HTMLAttributes, ReactNode, RefObject } from 'react';
1
+ import type { HTMLAttributes, ReactElement, ReactNode, RefObject } from 'react';
2
2
  import type { TransitionProps } from 'react-transition-group/Transition';
3
3
 
4
4
  import type { BaseModalProps } from '@alfalab/core-components-base-modal';
@@ -111,6 +111,16 @@ export type BottomSheetProps = {
111
111
  */
112
112
  modalWrapperClassName?: string;
113
113
 
114
+ /**
115
+ * Дополнительный класс для маркера
116
+ */
117
+ swipeableMarkerClassName?: string;
118
+
119
+ /**
120
+ * Кастомный маркер
121
+ */
122
+ swipeableMarker?: ReactElement;
123
+
114
124
  /**
115
125
  * TransitionProps, прокидываются в компонент CSSTransitionProps.
116
126
  */
package/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react-transition-group" />
2
- import { HTMLAttributes, ReactNode, RefObject } from 'react';
2
+ import { HTMLAttributes, ReactElement, ReactNode, RefObject } from 'react';
3
3
  import { TransitionProps } from 'react-transition-group/Transition';
4
4
  import { BaseModalProps } from "@alfalab/core-components-base-modal";
5
5
  import { NavigationBarProps } from "@alfalab/core-components-navigation-bar";
@@ -88,6 +88,14 @@ type BottomSheetProps = {
88
88
  * Дополнительный класс для обертки модального окна
89
89
  */
90
90
  modalWrapperClassName?: string;
91
+ /**
92
+ * Дополнительный класс для маркера
93
+ */
94
+ swipeableMarkerClassName?: string;
95
+ /**
96
+ * Кастомный маркер
97
+ */
98
+ swipeableMarker?: ReactElement;
91
99
  /**
92
100
  * TransitionProps, прокидываются в компонент CSSTransitionProps.
93
101
  */