@alfalab/core-components-bottom-sheet 5.3.1 → 6.0.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.
Files changed (63) hide show
  1. package/{component-7f6ec6ba.d.ts → component-4db10e00.d.ts} +14 -67
  2. package/{component-7f6ec6ba.js → component-4db10e00.js} +23 -67
  3. package/component.js +2 -7
  4. package/components/footer/Component.js +1 -1
  5. package/components/footer/index.css +4 -4
  6. package/components/header/Component.js +3 -8
  7. package/components/header/index.css +19 -32
  8. package/cssm/{component-8a02e7db.d.ts → component-b3add484.d.ts} +14 -67
  9. package/cssm/{component-8a02e7db.js → component-b3add484.js} +21 -65
  10. package/cssm/component.js +2 -9
  11. package/cssm/components/header/Component.js +3 -10
  12. package/cssm/components/header/index.module.css +7 -20
  13. package/cssm/index.d.ts +1 -1
  14. package/cssm/index.js +2 -9
  15. package/cssm/index.module.css +4 -5
  16. package/esm/{component-9a8081cd.d.ts → component-094991ea.d.ts} +14 -67
  17. package/esm/{component-9a8081cd.js → component-094991ea.js} +24 -68
  18. package/esm/component.js +2 -7
  19. package/esm/components/footer/Component.js +1 -1
  20. package/esm/components/footer/index.css +4 -4
  21. package/esm/components/header/Component.js +3 -8
  22. package/esm/components/header/index.css +19 -32
  23. package/esm/index.css +19 -20
  24. package/esm/index.d.ts +1 -1
  25. package/esm/index.js +2 -7
  26. package/index.css +19 -20
  27. package/index.d.ts +1 -1
  28. package/index.js +2 -7
  29. package/modern/{component-6012913e.d.ts → component-44079f58.d.ts} +14 -67
  30. package/modern/{component-6012913e.js → component-44079f58.js} +28 -51
  31. package/modern/component.js +2 -7
  32. package/modern/components/footer/Component.js +1 -1
  33. package/modern/components/footer/index.css +4 -4
  34. package/modern/components/header/Component.js +2 -7
  35. package/modern/components/header/index.css +19 -32
  36. package/modern/index.css +19 -20
  37. package/modern/index.d.ts +1 -1
  38. package/modern/index.js +2 -7
  39. package/package.json +4 -3
  40. package/components/backer/Component.d.ts +0 -28
  41. package/components/backer/Component.js +0 -23
  42. package/components/backer/index.css +0 -34
  43. package/components/closer/Component.d.ts +0 -24
  44. package/components/closer/Component.js +0 -28
  45. package/components/closer/index.css +0 -34
  46. package/cssm/components/backer/Component.d.ts +0 -28
  47. package/cssm/components/backer/Component.js +0 -22
  48. package/cssm/components/backer/index.module.css +0 -33
  49. package/cssm/components/closer/Component.d.ts +0 -24
  50. package/cssm/components/closer/Component.js +0 -27
  51. package/cssm/components/closer/index.module.css +0 -33
  52. package/esm/components/backer/Component.d.ts +0 -28
  53. package/esm/components/backer/Component.js +0 -16
  54. package/esm/components/backer/index.css +0 -34
  55. package/esm/components/closer/Component.d.ts +0 -24
  56. package/esm/components/closer/Component.js +0 -21
  57. package/esm/components/closer/index.css +0 -34
  58. package/modern/components/backer/Component.d.ts +0 -28
  59. package/modern/components/backer/Component.js +0 -12
  60. package/modern/components/backer/index.css +0 -34
  61. package/modern/components/closer/Component.d.ts +0 -24
  62. package/modern/components/closer/Component.js +0 -19
  63. package/modern/components/closer/index.css +0 -34
@@ -8,11 +8,9 @@ var reactSwipeable = require('react-swipeable');
8
8
  var cn = require('classnames');
9
9
  var coreComponentsBaseModal = require('@alfalab/core-components-base-modal/cssm');
10
10
  var components_footer_Component = require('./components/footer/Component.js');
11
- var coreComponentsTypography = require('@alfalab/core-components-typography/cssm');
11
+ var coreComponentsNavigationBar = require('@alfalab/core-components-navigation-bar/cssm');
12
12
  var components_swipeableBackdrop_Component = require('./components/swipeable-backdrop/Component.js');
13
13
  var styles$1 = require('./index.module.css');
14
- var components_backer_Component = require('./components/backer/Component.js');
15
- var components_closer_Component = require('./components/closer/Component.js');
16
14
  var styles = require('./components/header/index.module.css');
17
15
 
18
16
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -29,50 +27,21 @@ var getDataTestId = function (dataTestId, element) {
29
27
  };
30
28
 
31
29
  var Header = function (_a) {
32
- var _b, _c, _d, _e, _f;
33
- var title = _a.title, headerClassName = _a.headerClassName, addonClassName = _a.addonClassName, closerClassName = _a.closerClassName, backerClassName = _a.backerClassName, leftAddons = _a.leftAddons, rightAddons = _a.rightAddons, bottomAddons = _a.bottomAddons, hasCloser = _a.hasCloser, hasBacker = _a.hasBacker, titleAlign = _a.titleAlign, trimTitle = _a.trimTitle, sticky = _a.sticky, dataTestId = _a.dataTestId, onBack = _a.onBack;
34
- var _g = React.useContext(coreComponentsBaseModal.BaseModalContext), headerHighlighted = _g.headerHighlighted, setHasHeader = _g.setHasHeader, setHeaderOffset = _g.setHeaderOffset;
35
- var hasLeftPart = hasBacker || leftAddons || titleAlign === 'center';
36
- var hasRightPart = hasCloser || rightAddons || titleAlign === 'center';
37
- var hasHeaderContent = title || hasBacker || hasCloser;
38
- React.useEffect(function () {
39
- setHasHeader(true);
40
- }, [setHasHeader]);
30
+ var _b;
31
+ var className = _a.className, sticky = _a.sticky, title = _a.title, children = _a.children, restProps = tslib.__rest(_a, ["className", "sticky", "title", "children"]);
32
+ var _c = React.useContext(coreComponentsBaseModal.BaseModalContext), setHeaderOffset = _c.setHeaderOffset, setHasHeader = _c.setHasHeader, headerHighlighted = _c.headerHighlighted, onClose = _c.onClose;
41
33
  React.useEffect(function () {
42
34
  setHeaderOffset(HEADER_OFFSET);
43
35
  }, [setHeaderOffset]);
44
- var getTitleIndent = function () {
45
- var _a;
46
- var titleAlignedCenter = titleAlign === 'center';
47
- var hasLeftPart = hasBacker || leftAddons;
48
- var hasRightPart = hasCloser || rightAddons;
49
- return cn__default.default((_a = {},
50
- _a[styles__default.default.titleBigIndentHorizontal] = !sticky && titleAlignedCenter && (hasLeftPart || hasRightPart),
51
- _a[styles__default.default.titleIndentLeft] = !sticky && !titleAlignedCenter && hasLeftPart,
52
- _a[styles__default.default.titleIndentRight] = !sticky && !titleAlignedCenter && hasRightPart,
53
- _a));
54
- };
55
- return (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.headerWrapper, headerClassName, (_b = {},
56
- _b[styles__default.default.highlighted] = headerHighlighted && sticky,
36
+ React.useEffect(function () {
37
+ setHasHeader(true);
38
+ }, [setHasHeader]);
39
+ var hasContent = Boolean(title || children);
40
+ return (React__default.default.createElement(coreComponentsNavigationBar.NavigationBar, tslib.__assign({}, restProps, { title: title, onClose: onClose, sticky: sticky, view: 'mobile', className: cn__default.default(styles__default.default.headerWrapper, className, (_b = {},
41
+ _b[styles__default.default.highlighted] = hasContent && headerHighlighted && sticky,
57
42
  _b[styles__default.default.sticky] = sticky,
58
- _b)), "data-test-id": getDataTestId(dataTestId) },
59
- React__default.default.createElement("div", { className: cn__default.default(styles__default.default.header, headerClassName, (_c = {},
60
- _c[styles__default.default.justifyEnd] = !title,
61
- _c)) },
62
- hasLeftPart && (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.addon, addonClassName, (_d = {},
63
- _d[styles__default.default.addonFixed] = !sticky,
64
- _d[styles__default.default.addonLeft] = !sticky,
65
- _d)) }, hasBacker ? (React__default.default.createElement(components_backer_Component.Backer, { className: backerClassName, onClick: onBack, dataTestId: getDataTestId(dataTestId, 'backer') })) : (leftAddons))),
66
- hasHeaderContent && (React__default.default.createElement(coreComponentsTypography.Typography.Text, { view: 'primary-large', weight: 'bold', className: cn__default.default(styles__default.default.title, getTitleIndent(), (_e = {},
67
- _e[styles__default.default.titleCenter] = titleAlign === 'center',
68
- _e[styles__default.default.titleLeft] = titleAlign === 'left',
69
- _e[styles__default.default.trimTitle] = trimTitle,
70
- _e)), color: 'primary', dataTestId: getDataTestId(dataTestId, 'title') }, title)),
71
- hasRightPart && (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.addon, addonClassName, (_f = {},
72
- _f[styles__default.default.addonFixed] = !sticky,
73
- _f[styles__default.default.addonRight] = !sticky,
74
- _f)) }, hasCloser ? (React__default.default.createElement(components_closer_Component.Closer, { className: closerClassName, dataTestId: getDataTestId(dataTestId, 'closer') })) : (rightAddons)))),
75
- bottomAddons));
43
+ _b[styles__default.default.hasContent] = hasContent,
44
+ _b)), contentClassName: cn__default.default(styles__default.default.title) }), children));
76
45
  };
77
46
 
78
47
  var TIMEOUT = 300;
@@ -85,34 +54,21 @@ var HEADER_OFFSET = 24;
85
54
  var CLOSE_OFFSET = 0.2;
86
55
  var BottomSheet = React.forwardRef(function (_a, ref) {
87
56
  var _b, _c, _d;
88
- var open = _a.open, title = _a.title, container = _a.container, actionButton = _a.actionButton, contentClassName = _a.contentClassName, containerClassName = _a.containerClassName, containerProps = _a.containerProps, headerClassName = _a.headerClassName, footerClassName = _a.footerClassName, addonClassName = _a.addonClassName, closerClassName = _a.closerClassName, backerClassName = _a.backerClassName, modalClassName = _a.modalClassName, modalWrapperClassName = _a.modalWrapperClassName, className = _a.className, leftAddons = _a.leftAddons, rightAddons = _a.rightAddons, bottomAddons = _a.bottomAddons, hasCloser = _a.hasCloser, hasBacker = _a.hasBacker, _e = _a.titleAlign, titleAlign = _e === void 0 ? 'left' : _e, trimTitle = _a.trimTitle, stickyHeader = _a.stickyHeader, _f = _a.stickyFooter, stickyFooter = _f === void 0 ? true : _f, _g = _a.initialHeight, initialHeight = _g === void 0 ? 'default' : _g, hideOverlay = _a.hideOverlay, hideHeader = _a.hideHeader, disableOverlayClick = _a.disableOverlayClick, disableBlockingScroll = _a.disableBlockingScroll, children = _a.children, zIndex = _a.zIndex, _h = _a.transitionProps, transitionProps = _h === void 0 ? {} : _h, dataTestId = _a.dataTestId, _j = _a.swipeable, swipeable = _j === void 0 ? true : _j, backdropProps = _a.backdropProps, _k = _a.scrollableContainerRef, scrollableContainerRef = _k === void 0 ? function () { return null; } : _k, onClose = _a.onClose, onBack = _a.onBack;
89
- var _l = React.useState(0), sheetOffset = _l[0], setSheetOffset = _l[1];
90
- var _m = React.useState(1), backdropOpacity = _m[0], setBackdropOpacity = _m[1];
91
- var _o = React.useState(false), scrollLocked = _o[0], setScrollLocked = _o[1];
57
+ var open = _a.open, title = _a.title, container = _a.container, _e = _a.titleSize, titleSize = _e === void 0 ? 'default' : _e, subtitle = _a.subtitle, actionButton = _a.actionButton, contentClassName = _a.contentClassName, containerClassName = _a.containerClassName, containerProps = _a.containerProps, headerClassName = _a.headerClassName, footerClassName = _a.footerClassName, addonClassName = _a.addonClassName, closerClassName = _a.closerClassName, backerClassName = _a.backerClassName, modalClassName = _a.modalClassName, modalWrapperClassName = _a.modalWrapperClassName, className = _a.className, leftAddons = _a.leftAddons, rightAddons = _a.rightAddons, bottomAddons = _a.bottomAddons, hasCloser = _a.hasCloser, hasBacker = _a.hasBacker, _f = _a.titleAlign, titleAlign = _f === void 0 ? 'left' : _f, trimTitle = _a.trimTitle, stickyHeader = _a.stickyHeader, _g = _a.stickyFooter, stickyFooter = _g === void 0 ? true : _g, _h = _a.initialHeight, initialHeight = _h === void 0 ? 'default' : _h, hideOverlay = _a.hideOverlay, hideHeader = _a.hideHeader, disableOverlayClick = _a.disableOverlayClick, disableBlockingScroll = _a.disableBlockingScroll, children = _a.children, zIndex = _a.zIndex, _j = _a.transitionProps, transitionProps = _j === void 0 ? {} : _j, dataTestId = _a.dataTestId, _k = _a.swipeable, swipeable = _k === void 0 ? true : _k, backdropProps = _a.backdropProps, _l = _a.scrollableContainerRef, scrollableContainerRef = _l === void 0 ? function () { return null; } : _l, onClose = _a.onClose, onBack = _a.onBack;
58
+ var _m = React.useState(0), sheetOffset = _m[0], setSheetOffset = _m[1];
59
+ var _o = React.useState(1), backdropOpacity = _o[0], setBackdropOpacity = _o[1];
60
+ var _p = React.useState(false), scrollLocked = _p[0], setScrollLocked = _p[1];
92
61
  var sheetHeight = React.useRef(0);
93
62
  var scrollableContainer = React.useRef(null);
94
63
  var scrollableContainerScrollValue = React.useRef(0);
95
- var emptyHeader = !hasCloser && !hasBacker && !leftAddons && !rightAddons && !title;
64
+ var emptyHeader = !hasCloser && !leftAddons && !title && !hasBacker && !rightAddons;
96
65
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
97
66
  var fullHeight = reactDiv100vh.use100vh();
98
67
  var targetHeight = "".concat(fullHeight - HEADER_OFFSET, "px");
99
- var headerProps = {
100
- title: title,
101
- headerClassName: headerClassName,
102
- addonClassName: addonClassName,
103
- closerClassName: closerClassName,
104
- backerClassName: backerClassName,
105
- leftAddons: leftAddons,
106
- rightAddons: rightAddons,
107
- bottomAddons: bottomAddons,
108
- hasCloser: hasCloser,
109
- hasBacker: hasBacker,
110
- titleAlign: titleAlign,
111
- trimTitle: trimTitle,
112
- sticky: stickyHeader,
113
- dataTestId: getDataTestId(dataTestId, 'header'),
114
- onBack: onBack,
115
- };
68
+ var titleIsReactElement = React__default.default.isValidElement(title);
69
+ var headerProps = tslib.__assign(tslib.__assign({}, (titleIsReactElement
70
+ ? { children: title }
71
+ : { title: title ? title === null || title === void 0 ? void 0 : title.toString() : undefined })), { parentRef: scrollableContainer, className: headerClassName, addonClassName: addonClassName, closerClassName: closerClassName, backButtonClassName: backerClassName, leftAddons: leftAddons, rightAddons: rightAddons, bottomAddons: bottomAddons, hasCloser: hasCloser, hasBackButton: hasBacker, align: titleAlign, trim: trimTitle, sticky: stickyHeader, dataTestId: getDataTestId(dataTestId, 'header'), onBack: onBack, titleSize: titleSize, subtitle: subtitle, onClose: onClose });
116
72
  var getBackdropOpacity = function (offset) {
117
73
  if (sheetHeight.current === 0)
118
74
  return MIN_BACKDROP_OPACITY;
package/cssm/component.js CHANGED
@@ -7,18 +7,11 @@ require('react-merge-refs');
7
7
  require('react-swipeable');
8
8
  require('classnames');
9
9
  require('@alfalab/core-components-base-modal/cssm');
10
- var components_header_Component = require('./component-8a02e7db.js');
10
+ var components_header_Component = require('./component-b3add484.js');
11
11
  require('./components/footer/Component.js');
12
12
  require('./components/swipeable-backdrop/Component.js');
13
13
  require('./index.module.css');
14
- require('@alfalab/core-components-typography/cssm');
15
- require('./components/backer/Component.js');
16
- require('@alfalab/core-components-icon-button/cssm');
17
- require('@alfalab/icons-glyph/ArrowBackMIcon');
18
- require('./components/backer/index.module.css');
19
- require('./components/closer/Component.js');
20
- require('@alfalab/icons-glyph/CrossMIcon');
21
- require('./components/closer/index.module.css');
14
+ require('@alfalab/core-components-navigation-bar/cssm');
22
15
  require('./components/header/index.module.css');
23
16
  require('./components/footer/index.module.css');
24
17
  require('@alfalab/core-components-backdrop/cssm');
@@ -1,14 +1,12 @@
1
1
  'use strict';
2
2
 
3
+ require('tslib');
3
4
  require('react');
4
5
  require('classnames');
5
6
  require('@alfalab/core-components-base-modal/cssm');
6
- require('@alfalab/core-components-typography/cssm');
7
- var components_header_Component = require('../../component-8a02e7db.js');
8
- require('../backer/Component.js');
9
- require('../closer/Component.js');
7
+ require('@alfalab/core-components-navigation-bar/cssm');
8
+ var components_header_Component = require('../../component-b3add484.js');
10
9
  require('./index.module.css');
11
- require('tslib');
12
10
  require('react-div-100vh');
13
11
  require('react-merge-refs');
14
12
  require('react-swipeable');
@@ -17,11 +15,6 @@ require('../footer/index.module.css');
17
15
  require('../swipeable-backdrop/Component.js');
18
16
  require('@alfalab/core-components-backdrop/cssm');
19
17
  require('../../index.module.css');
20
- require('@alfalab/core-components-icon-button/cssm');
21
- require('@alfalab/icons-glyph/ArrowBackMIcon');
22
- require('../backer/index.module.css');
23
- require('@alfalab/icons-glyph/CrossMIcon');
24
- require('../closer/index.module.css');
25
18
 
26
19
 
27
20
 
@@ -1,6 +1,7 @@
1
1
  :root {
2
2
  } /* deprecated */ :root {
3
3
  --color-light-bg-primary: #fff;
4
+ --color-light-border-primary: #dbdee1;
4
5
  } :root {
5
6
  } :root {
6
7
  } :root {
@@ -15,25 +16,24 @@
15
16
  } :root {
16
17
  --gap-2xs: 4px;
17
18
  --gap-xs: 8px;
18
- --gap-4xl: 48px;
19
+ --gap-s: 12px;
19
20
  } :root {
20
21
  --font-family-system: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Helvetica,
21
22
  sans-serif;
22
23
  } :root {
23
24
  } :root {
24
- --bottom-sheet-header-border-bottom: none;
25
+ --bottom-sheet-header-border-bottom: 1px solid var(--color-light-border-primary);
25
26
  --bottom-sheet-title-font-size: 18px;
26
27
  --bottom-sheet-title-font-weight: 700;
27
28
  --bottom-sheet-title-line-height: 24px;
28
29
  --bottom-sheet-title-font-family: var(--font-family-system);
29
- --bottom-sheet-title-margin-vertical: var(--gap-2xs);
30
30
  } .headerWrapper {
31
- padding: var(--gap-xs);
32
- padding-bottom: 0;
33
- background-color: var(--color-light-bg-primary);
31
+ padding: var(--gap-s) var(--gap-xs) var(--gap-2xs);
34
32
  border-top-right-radius: var(--border-radius-xl);
35
33
  border-top-left-radius: var(--border-radius-xl);
36
34
  z-index: 1;
35
+ } .hasContent {
36
+ background-color: var(--color-light-bg-primary);
37
37
  } .header {
38
38
  display: flex;
39
39
  } .sticky {
@@ -51,15 +51,8 @@
51
51
  height: 48px;
52
52
  } .addonFixed {
53
53
  position: fixed;
54
- } .addonLeft {
55
- left: 0;
56
- margin-left: var(--gap-xs);
57
- } .addonRight {
58
- right: 0;
59
- margin-right: var(--gap-xs);
60
54
  } .title {
61
- padding: var(--gap-xs) var(--gap-xs);
62
- margin: var(--bottom-sheet-title-margin-vertical) 0;
55
+ padding: var(--gap-s) var(--gap-xs);
63
56
  width: 100%;
64
57
  font-size: var(--bottom-sheet-title-font-size);
65
58
  font-weight: var(--bottom-sheet-title-font-weight);
@@ -73,10 +66,4 @@
73
66
  white-space: nowrap;
74
67
  overflow: hidden;
75
68
  text-overflow: ellipsis;
76
- } .titleBigIndentHorizontal {
77
- margin: var(--bottom-sheet-title-margin-vertical) var(--gap-4xl);
78
- } .titleIndentRight {
79
- margin-right: var(--gap-4xl);
80
- } .titleIndentLeft {
81
- margin-left: var(--gap-4xl);
82
69
  }
package/cssm/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from "./component-8a02e7db";
1
+ export * from "./component-b3add484";
package/cssm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var components_header_Component = require('./component-8a02e7db.js');
3
+ var components_header_Component = require('./component-b3add484.js');
4
4
  require('tslib');
5
5
  require('react');
6
6
  require('react-div-100vh');
@@ -10,17 +10,10 @@ require('classnames');
10
10
  require('@alfalab/core-components-base-modal/cssm');
11
11
  require('./components/footer/Component.js');
12
12
  require('./components/footer/index.module.css');
13
- require('@alfalab/core-components-typography/cssm');
13
+ require('@alfalab/core-components-navigation-bar/cssm');
14
14
  require('./components/swipeable-backdrop/Component.js');
15
15
  require('@alfalab/core-components-backdrop/cssm');
16
16
  require('./index.module.css');
17
- require('./components/backer/Component.js');
18
- require('@alfalab/core-components-icon-button/cssm');
19
- require('@alfalab/icons-glyph/ArrowBackMIcon');
20
- require('./components/backer/index.module.css');
21
- require('./components/closer/Component.js');
22
- require('@alfalab/icons-glyph/CrossMIcon');
23
- require('./components/closer/index.module.css');
24
17
  require('./components/header/index.module.css');
25
18
 
26
19
 
@@ -13,12 +13,11 @@
13
13
 
14
14
  /* Hard up */
15
15
  } :root {
16
+ --border-radius-xl: 16px;
16
17
  --border-radius-xxl: 20px;
17
- --border-radius-3xl: 24px;
18
18
  } :root {
19
19
  --gap-2xs: 4px;
20
20
  --gap-m: 16px;
21
- --gap-xl: 24px;
22
21
  } :root {
23
22
  } :root {
24
23
  } :root {
@@ -35,8 +34,8 @@
35
34
  position: relative;
36
35
  display: flex;
37
36
  flex-direction: column;
38
- border-top-right-radius: var(--border-radius-3xl);
39
- border-top-left-radius: var(--border-radius-3xl);
37
+ border-top-right-radius: var(--border-radius-xl);
38
+ border-top-left-radius: var(--border-radius-xl);
40
39
  background: var(--color-light-bg-primary);
41
40
  transform: translateY(100%);
42
41
  } .withTransition {
@@ -65,7 +64,7 @@
65
64
  color: var(--color-light-text-primary);
66
65
  background-color: var(--color-light-bg-primary);
67
66
  } .noHeader {
68
- padding-top: var(--gap-xl);
67
+ padding-top: var(--gap-m);
69
68
  } .noFooter {
70
69
  padding-bottom: var(--gap-m);
71
70
  } .scrollLocked {
@@ -1,76 +1,15 @@
1
1
  /// <reference types="react-transition-group" />
2
2
  /// <reference types="react" />
3
3
  import React from "react";
4
- import { FC, ReactNode, HTMLAttributes, RefObject } from "react";
5
- import { BottomSheetTitleAlign } from "./index";
4
+ import { FC, HTMLAttributes, ReactNode, RefObject } from "react";
5
+ import { NavigationBarProps } from "@alfalab/core-components-navigation-bar";
6
6
  import { TransitionProps } from 'react-transition-group/Transition';
7
7
  import { BaseModalProps } from "@alfalab/core-components-base-modal";
8
- type HeaderProps = {
9
- /**
10
- * Заголовок
11
- */
12
- title?: ReactNode;
13
- /**
14
- * Дополнительный класс
15
- */
16
- headerClassName?: string;
17
- /**
18
- * Дополнительный класс для аддонов
19
- */
20
- addonClassName?: string;
21
- /**
22
- * Дополнительный класс для компонента крестика
23
- */
24
- closerClassName?: string;
25
- /**
26
- * Дополнительный класс для компонента стрелки назад
27
- */
28
- backerClassName?: string;
29
- /**
30
- * Слот слева
31
- */
32
- leftAddons?: ReactNode;
33
- /**
34
- * Слот справа
35
- */
36
- rightAddons?: ReactNode;
37
- /**
38
- * Слот снизу
39
- */
40
- bottomAddons?: ReactNode;
41
- /**
42
- * Наличие компонента крестика
43
- */
44
- hasCloser?: boolean;
45
- /**
46
- * Наличие компонента стрелки назад
47
- */
48
- hasBacker?: boolean;
49
- /**
50
- * Выравнивание заголовка
51
- */
52
- titleAlign?: BottomSheetTitleAlign;
53
- /**
54
- * Будет ли обрезан заголовок
55
- */
56
- trimTitle?: boolean;
57
- /**
58
- * Фиксирует шапку
59
- */
60
- sticky?: boolean;
61
- /**
62
- * Идентификатор для систем автоматизированного тестирования
63
- */
64
- dataTestId?: string;
65
- /**
66
- * Обработчик нажатия на стрелку назад
67
- */
68
- onBack?: () => void;
69
- };
8
+ type HeaderProps = Omit<NavigationBarProps, "view" | "size">;
70
9
  declare const Header: FC<HeaderProps>;
71
10
  declare const getDataTestId: (dataTestId?: string, element?: string) => string | undefined;
72
11
  declare const isClient: () => boolean;
73
- type BottomSheetTitleAlign$0 = 'center' | 'left';
12
+ type BottomSheetTitleAlign = 'center' | 'left';
74
13
  type BottomSheetProps = {
75
14
  /**
76
15
  * Контент
@@ -84,6 +23,14 @@ type BottomSheetProps = {
84
23
  * Заголовок
85
24
  */
86
25
  title?: ReactNode;
26
+ /**
27
+ * Размер заголовка
28
+ */
29
+ titleSize?: NavigationBarProps['titleSize'];
30
+ /**
31
+ * Подзаголовок.
32
+ */
33
+ subtitle?: NavigationBarProps['subtitle'];
87
34
  /**
88
35
  * Кнопка действия (обычно, это кнопка закрытия)
89
36
  */
@@ -178,7 +125,7 @@ type BottomSheetProps = {
178
125
  /**
179
126
  * Выравнивание заголовка
180
127
  */
181
- titleAlign?: BottomSheetTitleAlign$0;
128
+ titleAlign?: BottomSheetTitleAlign;
182
129
  /**
183
130
  * Фиксирует шапку
184
131
  */
@@ -236,4 +183,4 @@ type BottomSheetProps = {
236
183
  declare const HEADER_OFFSET = 24;
237
184
  declare const CLOSE_OFFSET = 0.2;
238
185
  declare const BottomSheet: React.ForwardRefExoticComponent<BottomSheetProps & React.RefAttributes<HTMLDivElement>>;
239
- export { HeaderProps, Header, getDataTestId, isClient, BottomSheetTitleAlign$0 as BottomSheetTitleAlign, BottomSheetProps, HEADER_OFFSET, CLOSE_OFFSET, BottomSheet };
186
+ export { HeaderProps, Header, getDataTestId, isClient, BottomSheetTitleAlign, BottomSheetProps, HEADER_OFFSET, CLOSE_OFFSET, BottomSheet };
@@ -1,4 +1,4 @@
1
- import { __assign } from 'tslib';
1
+ import { __rest, __assign } from 'tslib';
2
2
  import React, { useContext, useEffect, forwardRef, useState, useRef, useCallback } from 'react';
3
3
  import { use100vh } from 'react-div-100vh';
4
4
  import mergeRefs from 'react-merge-refs';
@@ -6,67 +6,36 @@ import { useSwipeable } from 'react-swipeable';
6
6
  import cn from 'classnames';
7
7
  import { BaseModalContext, BaseModal } from '@alfalab/core-components-base-modal/esm';
8
8
  import { Footer } from './components/footer/Component.js';
9
- import { Typography } from '@alfalab/core-components-typography/esm';
9
+ import { NavigationBar } from '@alfalab/core-components-navigation-bar/esm';
10
10
  import { SwipeableBackdrop } from './components/swipeable-backdrop/Component.js';
11
- import { Backer } from './components/backer/Component.js';
12
- import { Closer } from './components/closer/Component.js';
13
11
 
14
12
  var getDataTestId = function (dataTestId, element) {
15
13
  var elementPart = element ? "-".concat(element.toLowerCase()) : '';
16
14
  return dataTestId ? "".concat(dataTestId).concat(elementPart) : undefined;
17
15
  };
18
16
 
19
- var styles$1 = {"headerWrapper":"bottom-sheet__headerWrapper_1veed","header":"bottom-sheet__header_1veed","sticky":"bottom-sheet__sticky_1veed","highlighted":"bottom-sheet__highlighted_1veed","justifyEnd":"bottom-sheet__justifyEnd_1veed","addon":"bottom-sheet__addon_1veed","addonFixed":"bottom-sheet__addonFixed_1veed","addonLeft":"bottom-sheet__addonLeft_1veed","addonRight":"bottom-sheet__addonRight_1veed","title":"bottom-sheet__title_1veed","titleCenter":"bottom-sheet__titleCenter_1veed","titleLeft":"bottom-sheet__titleLeft_1veed","trimTitle":"bottom-sheet__trimTitle_1veed","titleBigIndentHorizontal":"bottom-sheet__titleBigIndentHorizontal_1veed","titleIndentRight":"bottom-sheet__titleIndentRight_1veed","titleIndentLeft":"bottom-sheet__titleIndentLeft_1veed"};
17
+ var styles$1 = {"headerWrapper":"bottom-sheet__headerWrapper_1vrpq","hasContent":"bottom-sheet__hasContent_1vrpq","header":"bottom-sheet__header_1vrpq","sticky":"bottom-sheet__sticky_1vrpq","highlighted":"bottom-sheet__highlighted_1vrpq","justifyEnd":"bottom-sheet__justifyEnd_1vrpq","addon":"bottom-sheet__addon_1vrpq","addonFixed":"bottom-sheet__addonFixed_1vrpq","title":"bottom-sheet__title_1vrpq","titleCenter":"bottom-sheet__titleCenter_1vrpq","titleLeft":"bottom-sheet__titleLeft_1vrpq","trimTitle":"bottom-sheet__trimTitle_1vrpq"};
20
18
  require('./components/header/index.css')
21
19
 
22
20
  var Header = function (_a) {
23
- var _b, _c, _d, _e, _f;
24
- var title = _a.title, headerClassName = _a.headerClassName, addonClassName = _a.addonClassName, closerClassName = _a.closerClassName, backerClassName = _a.backerClassName, leftAddons = _a.leftAddons, rightAddons = _a.rightAddons, bottomAddons = _a.bottomAddons, hasCloser = _a.hasCloser, hasBacker = _a.hasBacker, titleAlign = _a.titleAlign, trimTitle = _a.trimTitle, sticky = _a.sticky, dataTestId = _a.dataTestId, onBack = _a.onBack;
25
- var _g = useContext(BaseModalContext), headerHighlighted = _g.headerHighlighted, setHasHeader = _g.setHasHeader, setHeaderOffset = _g.setHeaderOffset;
26
- var hasLeftPart = hasBacker || leftAddons || titleAlign === 'center';
27
- var hasRightPart = hasCloser || rightAddons || titleAlign === 'center';
28
- var hasHeaderContent = title || hasBacker || hasCloser;
29
- useEffect(function () {
30
- setHasHeader(true);
31
- }, [setHasHeader]);
21
+ var _b;
22
+ var className = _a.className, sticky = _a.sticky, title = _a.title, children = _a.children, restProps = __rest(_a, ["className", "sticky", "title", "children"]);
23
+ var _c = useContext(BaseModalContext), setHeaderOffset = _c.setHeaderOffset, setHasHeader = _c.setHasHeader, headerHighlighted = _c.headerHighlighted, onClose = _c.onClose;
32
24
  useEffect(function () {
33
25
  setHeaderOffset(HEADER_OFFSET);
34
26
  }, [setHeaderOffset]);
35
- var getTitleIndent = function () {
36
- var _a;
37
- var titleAlignedCenter = titleAlign === 'center';
38
- var hasLeftPart = hasBacker || leftAddons;
39
- var hasRightPart = hasCloser || rightAddons;
40
- return cn((_a = {},
41
- _a[styles$1.titleBigIndentHorizontal] = !sticky && titleAlignedCenter && (hasLeftPart || hasRightPart),
42
- _a[styles$1.titleIndentLeft] = !sticky && !titleAlignedCenter && hasLeftPart,
43
- _a[styles$1.titleIndentRight] = !sticky && !titleAlignedCenter && hasRightPart,
44
- _a));
45
- };
46
- return (React.createElement("div", { className: cn(styles$1.headerWrapper, headerClassName, (_b = {},
47
- _b[styles$1.highlighted] = headerHighlighted && sticky,
27
+ useEffect(function () {
28
+ setHasHeader(true);
29
+ }, [setHasHeader]);
30
+ var hasContent = Boolean(title || children);
31
+ return (React.createElement(NavigationBar, __assign({}, restProps, { title: title, onClose: onClose, sticky: sticky, view: 'mobile', className: cn(styles$1.headerWrapper, className, (_b = {},
32
+ _b[styles$1.highlighted] = hasContent && headerHighlighted && sticky,
48
33
  _b[styles$1.sticky] = sticky,
49
- _b)), "data-test-id": getDataTestId(dataTestId) },
50
- React.createElement("div", { className: cn(styles$1.header, headerClassName, (_c = {},
51
- _c[styles$1.justifyEnd] = !title,
52
- _c)) },
53
- hasLeftPart && (React.createElement("div", { className: cn(styles$1.addon, addonClassName, (_d = {},
54
- _d[styles$1.addonFixed] = !sticky,
55
- _d[styles$1.addonLeft] = !sticky,
56
- _d)) }, hasBacker ? (React.createElement(Backer, { className: backerClassName, onClick: onBack, dataTestId: getDataTestId(dataTestId, 'backer') })) : (leftAddons))),
57
- hasHeaderContent && (React.createElement(Typography.Text, { view: 'primary-large', weight: 'bold', className: cn(styles$1.title, getTitleIndent(), (_e = {},
58
- _e[styles$1.titleCenter] = titleAlign === 'center',
59
- _e[styles$1.titleLeft] = titleAlign === 'left',
60
- _e[styles$1.trimTitle] = trimTitle,
61
- _e)), color: 'primary', dataTestId: getDataTestId(dataTestId, 'title') }, title)),
62
- hasRightPart && (React.createElement("div", { className: cn(styles$1.addon, addonClassName, (_f = {},
63
- _f[styles$1.addonFixed] = !sticky,
64
- _f[styles$1.addonRight] = !sticky,
65
- _f)) }, hasCloser ? (React.createElement(Closer, { className: closerClassName, dataTestId: getDataTestId(dataTestId, 'closer') })) : (rightAddons)))),
66
- bottomAddons));
34
+ _b[styles$1.hasContent] = hasContent,
35
+ _b)), contentClassName: cn(styles$1.title) }), children));
67
36
  };
68
37
 
69
- var styles = {"modal":"bottom-sheet__modal_h361e","component":"bottom-sheet__component_h361e","withTransition":"bottom-sheet__withTransition_h361e","scrollableContainer":"bottom-sheet__scrollableContainer_h361e","marker":"bottom-sheet__marker_h361e","content":"bottom-sheet__content_h361e","noHeader":"bottom-sheet__noHeader_h361e","noFooter":"bottom-sheet__noFooter_h361e","scrollLocked":"bottom-sheet__scrollLocked_h361e","appear":"bottom-sheet__appear_h361e","enter":"bottom-sheet__enter_h361e","appearActive":"bottom-sheet__appearActive_h361e","enterActive":"bottom-sheet__enterActive_h361e","enterDone":"bottom-sheet__enterDone_h361e","appearDone":"bottom-sheet__appearDone_h361e","exit":"bottom-sheet__exit_h361e","exitActive":"bottom-sheet__exitActive_h361e"};
38
+ var styles = {"modal":"bottom-sheet__modal_vr4ju","component":"bottom-sheet__component_vr4ju","withTransition":"bottom-sheet__withTransition_vr4ju","scrollableContainer":"bottom-sheet__scrollableContainer_vr4ju","marker":"bottom-sheet__marker_vr4ju","content":"bottom-sheet__content_vr4ju","noHeader":"bottom-sheet__noHeader_vr4ju","noFooter":"bottom-sheet__noFooter_vr4ju","scrollLocked":"bottom-sheet__scrollLocked_vr4ju","appear":"bottom-sheet__appear_vr4ju","enter":"bottom-sheet__enter_vr4ju","appearActive":"bottom-sheet__appearActive_vr4ju","enterActive":"bottom-sheet__enterActive_vr4ju","enterDone":"bottom-sheet__enterDone_vr4ju","appearDone":"bottom-sheet__appearDone_vr4ju","exit":"bottom-sheet__exit_vr4ju","exitActive":"bottom-sheet__exitActive_vr4ju"};
70
39
  require('./index.css')
71
40
 
72
41
  var TIMEOUT = 300;
@@ -79,34 +48,21 @@ var HEADER_OFFSET = 24;
79
48
  var CLOSE_OFFSET = 0.2;
80
49
  var BottomSheet = forwardRef(function (_a, ref) {
81
50
  var _b, _c, _d;
82
- var open = _a.open, title = _a.title, container = _a.container, actionButton = _a.actionButton, contentClassName = _a.contentClassName, containerClassName = _a.containerClassName, containerProps = _a.containerProps, headerClassName = _a.headerClassName, footerClassName = _a.footerClassName, addonClassName = _a.addonClassName, closerClassName = _a.closerClassName, backerClassName = _a.backerClassName, modalClassName = _a.modalClassName, modalWrapperClassName = _a.modalWrapperClassName, className = _a.className, leftAddons = _a.leftAddons, rightAddons = _a.rightAddons, bottomAddons = _a.bottomAddons, hasCloser = _a.hasCloser, hasBacker = _a.hasBacker, _e = _a.titleAlign, titleAlign = _e === void 0 ? 'left' : _e, trimTitle = _a.trimTitle, stickyHeader = _a.stickyHeader, _f = _a.stickyFooter, stickyFooter = _f === void 0 ? true : _f, _g = _a.initialHeight, initialHeight = _g === void 0 ? 'default' : _g, hideOverlay = _a.hideOverlay, hideHeader = _a.hideHeader, disableOverlayClick = _a.disableOverlayClick, disableBlockingScroll = _a.disableBlockingScroll, children = _a.children, zIndex = _a.zIndex, _h = _a.transitionProps, transitionProps = _h === void 0 ? {} : _h, dataTestId = _a.dataTestId, _j = _a.swipeable, swipeable = _j === void 0 ? true : _j, backdropProps = _a.backdropProps, _k = _a.scrollableContainerRef, scrollableContainerRef = _k === void 0 ? function () { return null; } : _k, onClose = _a.onClose, onBack = _a.onBack;
83
- var _l = useState(0), sheetOffset = _l[0], setSheetOffset = _l[1];
84
- var _m = useState(1), backdropOpacity = _m[0], setBackdropOpacity = _m[1];
85
- var _o = useState(false), scrollLocked = _o[0], setScrollLocked = _o[1];
51
+ var open = _a.open, title = _a.title, container = _a.container, _e = _a.titleSize, titleSize = _e === void 0 ? 'default' : _e, subtitle = _a.subtitle, actionButton = _a.actionButton, contentClassName = _a.contentClassName, containerClassName = _a.containerClassName, containerProps = _a.containerProps, headerClassName = _a.headerClassName, footerClassName = _a.footerClassName, addonClassName = _a.addonClassName, closerClassName = _a.closerClassName, backerClassName = _a.backerClassName, modalClassName = _a.modalClassName, modalWrapperClassName = _a.modalWrapperClassName, className = _a.className, leftAddons = _a.leftAddons, rightAddons = _a.rightAddons, bottomAddons = _a.bottomAddons, hasCloser = _a.hasCloser, hasBacker = _a.hasBacker, _f = _a.titleAlign, titleAlign = _f === void 0 ? 'left' : _f, trimTitle = _a.trimTitle, stickyHeader = _a.stickyHeader, _g = _a.stickyFooter, stickyFooter = _g === void 0 ? true : _g, _h = _a.initialHeight, initialHeight = _h === void 0 ? 'default' : _h, hideOverlay = _a.hideOverlay, hideHeader = _a.hideHeader, disableOverlayClick = _a.disableOverlayClick, disableBlockingScroll = _a.disableBlockingScroll, children = _a.children, zIndex = _a.zIndex, _j = _a.transitionProps, transitionProps = _j === void 0 ? {} : _j, dataTestId = _a.dataTestId, _k = _a.swipeable, swipeable = _k === void 0 ? true : _k, backdropProps = _a.backdropProps, _l = _a.scrollableContainerRef, scrollableContainerRef = _l === void 0 ? function () { return null; } : _l, onClose = _a.onClose, onBack = _a.onBack;
52
+ var _m = useState(0), sheetOffset = _m[0], setSheetOffset = _m[1];
53
+ var _o = useState(1), backdropOpacity = _o[0], setBackdropOpacity = _o[1];
54
+ var _p = useState(false), scrollLocked = _p[0], setScrollLocked = _p[1];
86
55
  var sheetHeight = useRef(0);
87
56
  var scrollableContainer = useRef(null);
88
57
  var scrollableContainerScrollValue = useRef(0);
89
- var emptyHeader = !hasCloser && !hasBacker && !leftAddons && !rightAddons && !title;
58
+ var emptyHeader = !hasCloser && !leftAddons && !title && !hasBacker && !rightAddons;
90
59
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
91
60
  var fullHeight = use100vh();
92
61
  var targetHeight = "".concat(fullHeight - HEADER_OFFSET, "px");
93
- var headerProps = {
94
- title: title,
95
- headerClassName: headerClassName,
96
- addonClassName: addonClassName,
97
- closerClassName: closerClassName,
98
- backerClassName: backerClassName,
99
- leftAddons: leftAddons,
100
- rightAddons: rightAddons,
101
- bottomAddons: bottomAddons,
102
- hasCloser: hasCloser,
103
- hasBacker: hasBacker,
104
- titleAlign: titleAlign,
105
- trimTitle: trimTitle,
106
- sticky: stickyHeader,
107
- dataTestId: getDataTestId(dataTestId, 'header'),
108
- onBack: onBack,
109
- };
62
+ var titleIsReactElement = React.isValidElement(title);
63
+ var headerProps = __assign(__assign({}, (titleIsReactElement
64
+ ? { children: title }
65
+ : { title: title ? title === null || title === void 0 ? void 0 : title.toString() : undefined })), { parentRef: scrollableContainer, className: headerClassName, addonClassName: addonClassName, closerClassName: closerClassName, backButtonClassName: backerClassName, leftAddons: leftAddons, rightAddons: rightAddons, bottomAddons: bottomAddons, hasCloser: hasCloser, hasBackButton: hasBacker, align: titleAlign, trim: trimTitle, sticky: stickyHeader, dataTestId: getDataTestId(dataTestId, 'header'), onBack: onBack, titleSize: titleSize, subtitle: subtitle, onClose: onClose });
110
66
  var getBackdropOpacity = function (offset) {
111
67
  if (sheetHeight.current === 0)
112
68
  return MIN_BACKDROP_OPACITY;
package/esm/component.js CHANGED
@@ -5,13 +5,8 @@ import 'react-merge-refs';
5
5
  import 'react-swipeable';
6
6
  import 'classnames';
7
7
  import '@alfalab/core-components-base-modal/esm';
8
- export { B as BottomSheet, C as CLOSE_OFFSET, H as HEADER_OFFSET } from './component-9a8081cd.js';
8
+ export { B as BottomSheet, C as CLOSE_OFFSET, H as HEADER_OFFSET } from './component-094991ea.js';
9
9
  import './components/footer/Component.js';
10
10
  import './components/swipeable-backdrop/Component.js';
11
- import '@alfalab/core-components-typography/esm';
12
- import './components/backer/Component.js';
13
- import '@alfalab/core-components-icon-button/esm';
14
- import '@alfalab/icons-glyph/ArrowBackMIcon';
15
- import './components/closer/Component.js';
16
- import '@alfalab/icons-glyph/CrossMIcon';
11
+ import '@alfalab/core-components-navigation-bar/esm';
17
12
  import '@alfalab/core-components-backdrop/esm';
@@ -2,7 +2,7 @@ import React, { useContext, useEffect } from 'react';
2
2
  import cn from 'classnames';
3
3
  import { BaseModalContext } from '@alfalab/core-components-base-modal/esm';
4
4
 
5
- var styles = {"footer":"bottom-sheet__footer_i273y","sticky":"bottom-sheet__sticky_i273y","highlighted":"bottom-sheet__highlighted_i273y"};
5
+ var styles = {"footer":"bottom-sheet__footer_1nwuz","sticky":"bottom-sheet__sticky_1nwuz","highlighted":"bottom-sheet__highlighted_1nwuz"};
6
6
  require('./index.css')
7
7
 
8
8
  var Footer = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: cjoe0 */
1
+ /* hash: 1szsw */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-bg-primary: #fff;
@@ -20,13 +20,13 @@
20
20
  } :root {
21
21
  --bottom-sheet-footer-border-top: 1px solid var(--color-light-border-primary);
22
22
  --bottom-sheet-footer-background-color: var(--color-light-bg-primary);
23
- } .bottom-sheet__footer_i273y {
23
+ } .bottom-sheet__footer_1nwuz {
24
24
  padding: var(--gap-m) var(--gap-m);
25
25
  background-color: var(--color-light-bg-primary);
26
- } .bottom-sheet__sticky_i273y {
26
+ } .bottom-sheet__sticky_1nwuz {
27
27
  position: sticky;
28
28
  bottom: 0;
29
- } .bottom-sheet__highlighted_i273y {
29
+ } .bottom-sheet__highlighted_1nwuz {
30
30
  border-top: var(--bottom-sheet-footer-border-top);
31
31
  background-color: var(--bottom-sheet-footer-background-color);
32
32
  }
@@ -1,17 +1,12 @@
1
+ import 'tslib';
1
2
  import 'react';
2
3
  import 'classnames';
3
4
  import '@alfalab/core-components-base-modal/esm';
4
- import '@alfalab/core-components-typography/esm';
5
- export { a as Header } from '../../component-9a8081cd.js';
6
- import '../backer/Component.js';
7
- import '../closer/Component.js';
8
- import 'tslib';
5
+ import '@alfalab/core-components-navigation-bar/esm';
6
+ export { a as Header } from '../../component-094991ea.js';
9
7
  import 'react-div-100vh';
10
8
  import 'react-merge-refs';
11
9
  import 'react-swipeable';
12
10
  import '../footer/Component.js';
13
11
  import '../swipeable-backdrop/Component.js';
14
12
  import '@alfalab/core-components-backdrop/esm';
15
- import '@alfalab/core-components-icon-button/esm';
16
- import '@alfalab/icons-glyph/ArrowBackMIcon';
17
- import '@alfalab/icons-glyph/CrossMIcon';