@cloud-ru/ds-uikit-product-page-layout 1.5.0 → 1.5.1-preview-a2208aeb.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/cjs/components/Actions/styles.module.css +2 -0
- package/dist/cjs/components/DefaultSubtitle/styles.module.css +6 -5
- package/dist/cjs/components/Headline/Headline.js +4 -1
- package/dist/cjs/components/Headline/styles.module.css +9 -3
- package/dist/cjs/components/PageCatalog/mobileStyles.module.css +2 -2
- package/dist/cjs/components/PageCatalog/styles.module.css +2 -2
- package/dist/cjs/components/PageForm/MobilePageForm.js +2 -2
- package/dist/cjs/components/PageForm/mobileStyles.module.css +16 -16
- package/dist/cjs/components/PageForm/styles.module.css +11 -19
- package/dist/cjs/components/PageLoading/styles.module.css +1 -1
- package/dist/cjs/components/PageServices/mobileStyles.module.css +3 -3
- package/dist/cjs/components/PageServices/styles.module.css +3 -2
- package/dist/cjs/components/PageSidebar/helperComponents/SidebarSelect/SidebarSelect.js +1 -1
- package/dist/cjs/components/PageSidebar/helperComponents/SidebarSelect/styles.module.css +18 -10
- package/dist/cjs/components/PageSidebar/helperComponents/SidebarTitle/styles.module.css +1 -0
- package/dist/cjs/components/PageSidebar/hooks/useItemsCreator.js +1 -2
- package/dist/cjs/components/PageSidebar/styles.module.css +9 -8
- package/dist/cjs/components/TreeNavigation/TreeNavigation.js +1 -1
- package/dist/cjs/components/TreeNavigation/helperComponents/ConditionalPopover/ConditionalPopover.js +1 -1
- package/dist/cjs/components/TreeNavigation/helperComponents/ConditionalPopover/styles.module.css +2 -4
- package/dist/cjs/components/TreeNavigation/helperComponents/Menu/Menu.js +1 -1
- package/dist/cjs/components/TreeNavigation/helperComponents/Menu/styles.module.css +2 -1
- package/dist/cjs/components/TreeNavigation/styles.module.css +10 -7
- package/dist/cjs/style.css +97 -83
- package/dist/esm/components/Actions/styles.module.css +2 -0
- package/dist/esm/components/DefaultSubtitle/styles.module.css +6 -5
- package/dist/esm/components/Headline/Headline.js +4 -1
- package/dist/esm/components/Headline/styles.module.css +9 -3
- package/dist/esm/components/PageCatalog/mobileStyles.module.css +2 -2
- package/dist/esm/components/PageCatalog/styles.module.css +2 -2
- package/dist/esm/components/PageForm/MobilePageForm.js +3 -3
- package/dist/esm/components/PageForm/mobileStyles.module.css +16 -16
- package/dist/esm/components/PageForm/styles.module.css +11 -19
- package/dist/esm/components/PageLoading/styles.module.css +1 -1
- package/dist/esm/components/PageServices/mobileStyles.module.css +3 -3
- package/dist/esm/components/PageServices/styles.module.css +3 -2
- package/dist/esm/components/PageSidebar/helperComponents/SidebarSelect/SidebarSelect.js +1 -1
- package/dist/esm/components/PageSidebar/helperComponents/SidebarSelect/styles.module.css +18 -10
- package/dist/esm/components/PageSidebar/helperComponents/SidebarTitle/styles.module.css +1 -0
- package/dist/esm/components/PageSidebar/hooks/useItemsCreator.js +1 -2
- package/dist/esm/components/PageSidebar/styles.module.css +9 -8
- package/dist/esm/components/TreeNavigation/TreeNavigation.js +1 -1
- package/dist/esm/components/TreeNavigation/helperComponents/ConditionalPopover/ConditionalPopover.js +1 -1
- package/dist/esm/components/TreeNavigation/helperComponents/ConditionalPopover/styles.module.css +2 -4
- package/dist/esm/components/TreeNavigation/helperComponents/Menu/Menu.js +1 -1
- package/dist/esm/components/TreeNavigation/helperComponents/Menu/styles.module.css +2 -1
- package/dist/esm/components/TreeNavigation/styles.module.css +10 -7
- package/dist/esm/style.css +97 -83
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +22 -22
- package/src/components/Actions/styles.module.scss +2 -0
- package/src/components/DefaultSubtitle/styles.module.scss +4 -2
- package/src/components/Headline/Headline.tsx +7 -1
- package/src/components/Headline/styles.module.scss +7 -1
- package/src/components/PageCatalog/mobileStyles.module.scss +1 -1
- package/src/components/PageForm/MobilePageForm.tsx +21 -11
- package/src/components/PageForm/mobileStyles.module.scss +12 -11
- package/src/components/PageForm/styles.module.scss +5 -20
- package/src/components/PageServices/mobileStyles.module.scss +2 -2
- package/src/components/PageServices/styles.module.scss +1 -0
- package/src/components/PageSidebar/helperComponents/SidebarSelect/SidebarSelect.tsx +1 -1
- package/src/components/PageSidebar/helperComponents/SidebarSelect/styles.module.scss +16 -5
- package/src/components/PageSidebar/helperComponents/SidebarTitle/styles.module.scss +1 -0
- package/src/components/PageSidebar/hooks/useItemsCreator.tsx +1 -4
- package/src/components/PageSidebar/styles.module.scss +11 -7
- package/src/components/TreeNavigation/TreeNavigation.tsx +1 -1
- package/src/components/TreeNavigation/helperComponents/ConditionalPopover/ConditionalPopover.tsx +1 -2
- package/src/components/TreeNavigation/helperComponents/ConditionalPopover/styles.module.scss +4 -6
- package/src/components/TreeNavigation/helperComponents/Menu/Menu.tsx +2 -1
- package/src/components/TreeNavigation/helperComponents/Menu/styles.module.scss +3 -1
- package/src/components/TreeNavigation/styles.module.scss +6 -1
package/README.md
CHANGED
|
@@ -578,6 +578,7 @@ import {
|
|
|
578
578
|
| `quotas` | `QuotaItem[]` | — | Список квот для отображения |
|
|
579
579
|
| `quotasUrl` | `string` | — | Ссылка на страницу квот по проекту |
|
|
580
580
|
| `size` | `"l"` \| `"m"` \| `"s"` \| `"xs"` | — | Размер <br/> Размер триггера; для `xs` применяется кнопка `s`. |
|
|
581
|
+
| `skeletonRowCount` | `number` | `4` | Количество строк-заглушек, пока идёт загрузка. <br/> Строка — это ряд сетки: в две колонки (desktop-дропдаун) она даёт две карточки, <br/> в одну (mobile, аккордеон `QuotaWidgetMini`) — одну. |
|
|
581
582
|
| `target` | `HTMLAttributeAnchorTarget` | — | |
|
|
582
583
|
| `tooltip` | `TooltipProps` | — | |
|
|
583
584
|
| `triggerClassName` | `string` | — | CSS-класс триггера |
|
|
@@ -622,6 +623,7 @@ import {
|
|
|
622
623
|
| `projectName` | `string` | — | Название проекта, по которому отображаются квоты |
|
|
623
624
|
| `quotas` | `QuotaItem` | — | Список квот для отображения |
|
|
624
625
|
| `quotasUrl` | `string` | — | Ссылка на страницу квот по проекту |
|
|
626
|
+
| `skeletonRowCount` | `number` | `4` | Количество строк-заглушек, пока идёт загрузка. <br/> Строка — это ряд сетки: в две колонки (desktop-дропдаун) она даёт две карточки, <br/> в одну (mobile, аккордеон `QuotaWidgetMini`) — одну. |
|
|
625
627
|
|
|
626
628
|
## ConditionalPopover
|
|
627
629
|
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
flex-shrink:0;
|
|
5
5
|
gap:var(--sn-primitive-dimension-8, 8px);
|
|
6
6
|
align-items:center;
|
|
7
|
+
box-sizing:border-box;
|
|
7
8
|
height:100%;
|
|
8
9
|
}
|
|
9
10
|
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
flex-shrink:0;
|
|
14
15
|
gap:var(--sn-primitive-dimension-8, 8px);
|
|
15
16
|
align-items:center;
|
|
17
|
+
box-sizing:border-box;
|
|
16
18
|
width:100%;
|
|
17
19
|
}
|
|
18
20
|
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
.subtitle{
|
|
2
2
|
display:flex;
|
|
3
3
|
flex-direction:row;
|
|
4
|
-
gap:var(--sn-primitive-dimension-
|
|
4
|
+
gap:var(--sn-primitive-dimension-8, 8px);
|
|
5
5
|
align-items:center;
|
|
6
|
+
box-sizing:border-box;
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
.label{
|
|
9
|
-
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body,
|
|
10
|
+
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, SB Sans Interface));
|
|
10
11
|
font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
11
|
-
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-
|
|
12
|
-
font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
|
|
12
|
+
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-platform-comfort-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-24, 24px))));
|
|
13
|
+
font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-platform-comfort-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px))));
|
|
13
14
|
letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
14
15
|
paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
|
|
15
16
|
display:flex;
|
|
16
17
|
flex-direction:row;
|
|
17
|
-
gap:var(--sn-primitive-dimension-
|
|
18
|
+
gap:var(--sn-primitive-dimension-2, 2px);
|
|
18
19
|
align-items:center;
|
|
19
20
|
}
|
|
@@ -5,13 +5,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Headline = Headline;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const adaptive_1 = require("@cloud-ru/ds-adaptive");
|
|
8
9
|
const truncate_string_1 = require("@cloud-ru/ds-truncate-string");
|
|
9
10
|
const typography_1 = require("@cloud-ru/ds-typography");
|
|
10
11
|
const utils_1 = require("@cloud-ru/ds-utils");
|
|
11
12
|
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
12
13
|
function Headline({ title, actions, moreActions, slotBeforeTitle, slotAfterTitle, subtitle, truncateTitle, ...rest }) {
|
|
14
|
+
const { layoutType } = (0, adaptive_1.useAdaptiveLayout)();
|
|
15
|
+
const isMobile = (0, adaptive_1.isMobileLayout)(layoutType);
|
|
13
16
|
const needsRender = Boolean(title || slotBeforeTitle || slotAfterTitle || subtitle || actions || moreActions);
|
|
14
17
|
if (!needsRender)
|
|
15
18
|
return null;
|
|
16
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headline, ...(0, utils_1.extractSupportProps)(rest), children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headlineLayout, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleLayout, children: [slotBeforeTitle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.prefixButtonWrapper, children: slotBeforeTitle }), (0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.headline, size: typography_1.SIZE.s, as: 'h1', className: styles_module_scss_1.default.title, children: truncateTitle ? (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: 'end', text: title, maxLines: 1 }) : title }), slotAfterTitle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.statusWrapper, children: slotAfterTitle }), moreActions && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.moreActions, children: moreActions })] }), Boolean(actions) && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.actions, children: actions })] }), subtitle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.subtitle, children: subtitle })] }));
|
|
19
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headline, ...(0, utils_1.extractSupportProps)(rest), children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headlineLayout, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleLayout, children: [slotBeforeTitle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.prefixButtonWrapper, children: slotBeforeTitle }), (0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.headline, size: typography_1.SIZE.s, as: 'h1', className: styles_module_scss_1.default.title, children: truncateTitle ? (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: 'end', text: title, maxLines: 1 }) : title }), slotAfterTitle && !isMobile && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.statusWrapper, children: slotAfterTitle }), moreActions && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.moreActions, children: moreActions })] }), Boolean(actions) && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.actions, children: actions })] }), slotAfterTitle && isMobile && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.statusRow, children: slotAfterTitle }), subtitle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.subtitle, children: subtitle })] }));
|
|
17
20
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
.headline{
|
|
2
2
|
display:flex;
|
|
3
3
|
flex-direction:column;
|
|
4
|
+
gap:var(--sn-primitive-dimension-8, 8px);
|
|
5
|
+
box-sizing:border-box;
|
|
4
6
|
}
|
|
5
7
|
|
|
6
8
|
.headlineLayout{
|
|
@@ -29,14 +31,14 @@
|
|
|
29
31
|
display:flex;
|
|
30
32
|
flex-shrink:0;
|
|
31
33
|
align-items:center;
|
|
32
|
-
min-height:var(--sn-regular-headline-s-lineHeight, var(--sn-density-typography-roleHeadline-lineHeightS, var(--sn-primitive-font-lineHeight-
|
|
34
|
+
min-height:var(--sn-regular-headline-s-lineHeight, var(--sn-density-typography-roleHeadline-lineHeightS, var(--sn-platform-comfort-typography-roleHeadline-lineHeightS, var(--sn-primitive-font-lineHeight-32, 32px))));
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
.moreActions{
|
|
36
38
|
display:flex;
|
|
37
39
|
flex-shrink:0;
|
|
38
40
|
align-items:center;
|
|
39
|
-
height:var(--sn-regular-headline-s-lineHeight, var(--sn-density-typography-roleHeadline-lineHeightS, var(--sn-primitive-font-lineHeight-
|
|
41
|
+
height:var(--sn-regular-headline-s-lineHeight, var(--sn-density-typography-roleHeadline-lineHeightS, var(--sn-platform-comfort-typography-roleHeadline-lineHeightS, var(--sn-primitive-font-lineHeight-32, 32px))));
|
|
40
42
|
margin-left:auto;
|
|
41
43
|
}
|
|
42
44
|
|
|
@@ -48,7 +50,11 @@
|
|
|
48
50
|
justify-content:flex-end;
|
|
49
51
|
}
|
|
50
52
|
|
|
53
|
+
.statusRow{
|
|
54
|
+
display:flex;
|
|
55
|
+
align-items:center;
|
|
56
|
+
}
|
|
57
|
+
|
|
51
58
|
.subtitle{
|
|
52
|
-
margin-top:var(--sn-primitive-dimension-4, 4px);
|
|
53
59
|
color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
|
|
54
60
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
.catalog{
|
|
2
2
|
display:flex;
|
|
3
3
|
flex-direction:column;
|
|
4
|
-
gap:var(--sn-density-spacing-interval-
|
|
4
|
+
gap:var(--sn-density-spacing-interval-m, var(--sn-platform-comfort-spacing-interval-m, var(--sn-primitive-dimension-24, 24px)));
|
|
5
5
|
box-sizing:border-box;
|
|
6
6
|
width:100%;
|
|
7
7
|
margin:0 auto;
|
|
8
|
-
padding:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-
|
|
8
|
+
padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.content{
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
.catalog{
|
|
2
2
|
display:flex;
|
|
3
3
|
flex-direction:column;
|
|
4
|
-
gap:var(--sn-density-spacing-interval-m, var(--sn-primitive-dimension-
|
|
4
|
+
gap:var(--sn-density-spacing-interval-m, var(--sn-platform-comfort-spacing-interval-m, var(--sn-primitive-dimension-24, 24px)));
|
|
5
5
|
box-sizing:border-box;
|
|
6
6
|
min-width:992px;
|
|
7
7
|
max-width:min(100%, 1248px);
|
|
8
8
|
margin:0 auto;
|
|
9
|
-
padding:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-
|
|
9
|
+
padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
.content{
|
|
@@ -47,10 +47,10 @@ function MobilePageFormBase({ children, title, subtitle, className, footer, step
|
|
|
47
47
|
setOpenMoreContentIndex(idx);
|
|
48
48
|
setOpenMore(false);
|
|
49
49
|
},
|
|
50
|
-
})), children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, icon: (0, jsx_runtime_1.jsx)(system_1.KebabSVG, {}), size: '
|
|
50
|
+
})), children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, icon: (0, jsx_runtime_1.jsx)(system_1.KebabSVG, {}), size: 's' }) })) : undefined }), stepper] }), sideBlock && ((0, jsx_runtime_1.jsx)(modal_1.ModalCustom, { open: openMoreContentIndex !== undefined, onClose: () => setOpenMoreContentIndex(undefined),
|
|
51
51
|
// Высоту листа задаёт сам sideBlock-элемент (`snapPoints`); напр. `[1]` — на всю высоту.
|
|
52
52
|
// По умолчанию — по высоте контента.
|
|
53
|
-
snapPoints: sideBlock[openMoreContentIndex ?? 0].snapPoints, children: (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Body, { content: sideBlock[openMoreContentIndex ?? 0].content }) })), (0, jsx_runtime_1.jsx)("div", { className: mobileStyles_module_scss_1.default.body, children: children }), (priceSummary || footer) && ((0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.footer, children: [priceSummary && ((0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.priceSummary, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.body, size: typography_1.SIZE.m, className: mobileStyles_module_scss_1.default.priceSummaryText, children: "\u041E\u0446\u0435\u043D\u043A\u0430 \u0431\u044E\u0434\u0436\u0435\u0442\u0430" }), (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { open: openPriceSummary, onOpenChange: setOpenPriceSummary, content: (0, jsx_runtime_1.jsx)("div", { className: mobileStyles_module_scss_1.default.modalContent, children: priceSummary.content }), "data-test-id": constants_1.TEST_IDS.pageForm.priceSummarySheet, children: (0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.priceSummaryRight, "data-test-id": constants_1.TEST_IDS.pageForm.priceSummaryTrigger, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.label, size: typography_1.SIZE.
|
|
53
|
+
snapPoints: sideBlock[openMoreContentIndex ?? 0].snapPoints, children: (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Body, { content: sideBlock[openMoreContentIndex ?? 0].content }) })), (0, jsx_runtime_1.jsx)("div", { className: mobileStyles_module_scss_1.default.body, children: children }), (priceSummary || footer) && ((0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.footer, children: [priceSummary && ((0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.priceSummary, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.body, size: typography_1.SIZE.m, className: mobileStyles_module_scss_1.default.priceSummaryText, children: "\u041E\u0446\u0435\u043D\u043A\u0430 \u0431\u044E\u0434\u0436\u0435\u0442\u0430" }), (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { open: openPriceSummary, onOpenChange: setOpenPriceSummary, content: (0, jsx_runtime_1.jsx)("div", { className: mobileStyles_module_scss_1.default.modalContent, children: priceSummary.content }), "data-test-id": constants_1.TEST_IDS.pageForm.priceSummarySheet, children: typeof priceSummary.total === 'string' ? ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, size: 's', label: priceSummary.total, icon: priceSummary.content ? (0, jsx_runtime_1.jsx)(system_1.ChevronRightSVG, {}) : undefined, iconPosition: button_1.ICON_POSITION.After, "data-test-id": constants_1.TEST_IDS.pageForm.priceSummaryTrigger })) : ((0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.priceSummaryRight, "data-test-id": constants_1.TEST_IDS.pageForm.priceSummaryTrigger, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.label, size: typography_1.SIZE.s, children: priceSummary.total }), priceSummary.content && (0, jsx_runtime_1.jsx)(system_1.ChevronRightSVG, { size: 16 })] })) })] })), footer && ((0, jsx_runtime_1.jsx)(button_1.ButtonGroup, { size: 'm', filled: true,
|
|
54
54
|
// 2 кнопки — в ряд (делят ширину); 3 — в столбик (правило футеров).
|
|
55
55
|
vertical: [footer.buttonPrimary, footer.buttonSecondary, footer.buttonAdditional].filter(Boolean).length >= 3, renderAction: (button, slot) => {
|
|
56
56
|
const tooltip = footerTooltips?.[slot];
|
|
@@ -4,24 +4,24 @@
|
|
|
4
4
|
display:flex;
|
|
5
5
|
flex-direction:column;
|
|
6
6
|
flex-grow:1;
|
|
7
|
-
gap:var(--sn-primitive-dimension-
|
|
7
|
+
gap:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
8
8
|
box-sizing:border-box;
|
|
9
9
|
width:100%;
|
|
10
10
|
min-height:100%;
|
|
11
|
-
padding:var(--sn-primitive-dimension-
|
|
12
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
11
|
+
padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
12
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
.body{
|
|
16
|
-
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body,
|
|
16
|
+
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, SB Sans Interface));
|
|
17
17
|
font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
18
|
-
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-
|
|
19
|
-
font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
|
|
18
|
+
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-platform-comfort-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-24, 24px))));
|
|
19
|
+
font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-platform-comfort-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px))));
|
|
20
20
|
letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
21
21
|
paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
|
|
22
22
|
flex:1;
|
|
23
23
|
color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
|
|
24
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
24
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
.footer{
|
|
@@ -30,12 +30,11 @@
|
|
|
30
30
|
bottom:0;
|
|
31
31
|
display:flex;
|
|
32
32
|
flex-direction:column;
|
|
33
|
-
gap:var(--sn-primitive-dimension-8, 8px);
|
|
34
33
|
box-sizing:border-box;
|
|
35
|
-
margin:0 calc(0px - var(--sn-primitive-dimension-
|
|
36
|
-
padding:var(--sn-primitive-dimension-8, 8px) var(--sn-primitive-dimension-
|
|
34
|
+
margin:0 calc(0px - var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)))) calc(0px - var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px))));
|
|
35
|
+
padding:var(--sn-primitive-dimension-8, 8px) var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px))) var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
37
36
|
border-top:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-neutral-decorTransparent, var(--sn-brand-color-neutral-transparent-forLightMode, rgba(124, 131, 182, 0.0784313725)));
|
|
38
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
37
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
.priceSummary{
|
|
@@ -43,7 +42,6 @@
|
|
|
43
42
|
gap:var(--sn-primitive-dimension-4, 4px);
|
|
44
43
|
align-items:center;
|
|
45
44
|
justify-content:space-between;
|
|
46
|
-
min-height:var(--sn-primitive-dimension-40, 40px);
|
|
47
45
|
}
|
|
48
46
|
|
|
49
47
|
.priceSummaryText{
|
|
@@ -53,7 +51,9 @@
|
|
|
53
51
|
.priceSummaryRight{
|
|
54
52
|
cursor:pointer;
|
|
55
53
|
display:flex;
|
|
54
|
+
gap:var(--sn-primitive-dimension-4, 4px);
|
|
56
55
|
align-items:center;
|
|
56
|
+
color:var(--sn-theme-color-neutral-text, var(--sn-brand-color-neutral-40, var(--sn-brand-palette-gray-40, #81869c)));
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
.header{
|
|
@@ -62,12 +62,12 @@
|
|
|
62
62
|
top:0;
|
|
63
63
|
display:flex;
|
|
64
64
|
flex-direction:column;
|
|
65
|
-
gap:var(--sn-primitive-dimension-
|
|
65
|
+
gap:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
66
66
|
box-sizing:border-box;
|
|
67
|
-
margin:calc(0px - var(--sn-primitive-dimension-
|
|
68
|
-
padding:var(--sn-primitive-dimension-
|
|
67
|
+
margin:calc(0px - var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)))) calc(0px - var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)))) 0;
|
|
68
|
+
padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
69
69
|
border-bottom:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-available-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-default-borderColor, rgba(159, 166, 198, 0.3019607843)));
|
|
70
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
70
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
.modalContent{
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
min-width:-moz-fit-content;
|
|
7
7
|
min-width:fit-content;
|
|
8
8
|
min-height:100%;
|
|
9
|
-
padding:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-
|
|
9
|
+
padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
.form{
|
|
@@ -15,10 +15,6 @@
|
|
|
15
15
|
min-height:100%;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
.container > .form[data-size=l]{
|
|
19
|
-
padding:var(--sn-primitive-dimension-56, 56px);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
18
|
.formContent{
|
|
23
19
|
display:flex;
|
|
24
20
|
flex:1;
|
|
@@ -31,15 +27,15 @@
|
|
|
31
27
|
}
|
|
32
28
|
|
|
33
29
|
.body{
|
|
34
|
-
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body,
|
|
30
|
+
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, SB Sans Interface));
|
|
35
31
|
font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
36
|
-
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-
|
|
37
|
-
font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
|
|
32
|
+
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-platform-comfort-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-24, 24px))));
|
|
33
|
+
font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-platform-comfort-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px))));
|
|
38
34
|
letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
39
35
|
paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
|
|
40
36
|
flex:1;
|
|
41
37
|
color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
|
|
42
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
38
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
43
39
|
}
|
|
44
40
|
|
|
45
41
|
.footer{
|
|
@@ -52,26 +48,22 @@
|
|
|
52
48
|
position:sticky;
|
|
53
49
|
bottom:0;
|
|
54
50
|
box-sizing:border-box;
|
|
55
|
-
margin:calc(0px - var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-
|
|
56
|
-
padding:var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-
|
|
51
|
+
margin:calc(0px - var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px))))));
|
|
52
|
+
padding:var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)))));
|
|
57
53
|
border-radius:0 0 var(--sn-block-anatomy-l-borderRadius, var(--sn-brand-anatomy-radius-block-l, var(--sn-primitive-dimension-4, 4px))) var(--sn-block-anatomy-l-borderRadius, var(--sn-brand-anatomy-radius-block-l, var(--sn-primitive-dimension-4, 4px)));
|
|
58
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
59
|
-
transition:border-radius 0.15s ease, padding 0.15s ease;
|
|
54
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
60
55
|
}
|
|
61
56
|
.footerSticky::before{
|
|
62
57
|
pointer-events:none;
|
|
63
58
|
content:"";
|
|
64
59
|
position:absolute;
|
|
65
60
|
inset:0;
|
|
66
|
-
border-top:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-
|
|
61
|
+
border-top:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-brand-palette-gray-80, #e3e5ed)));
|
|
67
62
|
border-radius:inherit;
|
|
68
63
|
opacity:0;
|
|
69
64
|
transition:opacity 0.15s ease;
|
|
70
65
|
}
|
|
71
66
|
|
|
72
|
-
.footerStuck{
|
|
73
|
-
padding:var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-primitive-dimension-32, 32px)));
|
|
74
|
-
}
|
|
75
67
|
.footerStuck::before{
|
|
76
68
|
opacity:1;
|
|
77
69
|
}
|
|
@@ -79,7 +71,7 @@
|
|
|
79
71
|
.footerSentinel{
|
|
80
72
|
pointer-events:none;
|
|
81
73
|
position:absolute;
|
|
82
|
-
bottom:calc(0px - var(--sn-primitive-dimension-
|
|
74
|
+
bottom:calc(0px - var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px))))));
|
|
83
75
|
left:50%;
|
|
84
76
|
transform:translateX(-50%);
|
|
85
77
|
width:var(--sn-primitive-dimension-2, 2px);
|
|
@@ -95,7 +87,7 @@
|
|
|
95
87
|
|
|
96
88
|
.sideItems{
|
|
97
89
|
position:sticky;
|
|
98
|
-
top:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-
|
|
90
|
+
top:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
99
91
|
display:flex;
|
|
100
92
|
flex-direction:column;
|
|
101
93
|
gap:var(--sn-primitive-dimension-4, 4px);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
box-sizing:border-box;
|
|
6
6
|
width:100%;
|
|
7
7
|
height:100%;
|
|
8
|
-
color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-
|
|
8
|
+
color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-50, var(--sn-brand-palette-gray-50, #8b8fa7)));
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.spinner{
|
|
@@ -7,16 +7,16 @@
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
.sidebarSelect{
|
|
10
|
-
border-bottom:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-
|
|
10
|
+
border-bottom:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-available-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-default-borderColor, rgba(159, 166, 198, 0.3019607843)));
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.body{
|
|
14
14
|
display:flex;
|
|
15
15
|
flex-direction:column;
|
|
16
16
|
flex-grow:1;
|
|
17
|
-
gap:var(--sn-density-spacing-interval-
|
|
17
|
+
gap:var(--sn-density-spacing-interval-m, var(--sn-platform-comfort-spacing-interval-m, var(--sn-primitive-dimension-24, 24px)));
|
|
18
18
|
box-sizing:border-box;
|
|
19
|
-
padding:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-
|
|
19
|
+
padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
.childWrapper{
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
display:flex;
|
|
3
3
|
flex-direction:row-reverse;
|
|
4
4
|
justify-content:flex-end;
|
|
5
|
+
box-sizing:border-box;
|
|
5
6
|
min-width:100%;
|
|
6
7
|
height:100%;
|
|
7
8
|
}
|
|
@@ -29,10 +30,10 @@
|
|
|
29
30
|
position:relative;
|
|
30
31
|
display:flex;
|
|
31
32
|
flex-direction:column;
|
|
32
|
-
gap:var(--sn-density-spacing-interval-m, var(--sn-primitive-dimension-
|
|
33
|
+
gap:var(--sn-density-spacing-interval-m, var(--sn-platform-comfort-spacing-interval-m, var(--sn-primitive-dimension-24, 24px)));
|
|
33
34
|
box-sizing:border-box;
|
|
34
35
|
min-height:100%;
|
|
35
|
-
padding:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-
|
|
36
|
+
padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
|
|
36
37
|
}
|
|
37
38
|
.container[data-limited=true]{
|
|
38
39
|
max-width:1248px;
|
|
@@ -35,7 +35,7 @@ function SidebarSelectBase({ className, items, footerItems = [], selected, onSel
|
|
|
35
35
|
};
|
|
36
36
|
const allItems = (0, react_1.useMemo)(() => [...list, ...footerList], [list, footerList]);
|
|
37
37
|
const shouldShowSearch = hasSearch ?? (allItems.length > 15 || Boolean(searchValue));
|
|
38
|
-
return ((0, jsx_runtime_1.jsx)(list_1.Droplist, { size: 'm', selection: { mode: 'single', value: selected, onChange: handleSelect }, items: allItems, open: isOpen, onOpenChange: setIsOpen, collapse: searchValue ? searchCollapseState : collapse || selectedCollapsedState, search: shouldShowSearch ? { value: searchValue, onChange: setSearchValue } : undefined, scrollToSelectedItem: true, children: (0, jsx_runtime_1.jsxs)("div", { role: 'button', tabIndex: 0, className: (0, classnames_1.default)(styles_module_scss_1.default.wrapper, className), "data-test-id": constants_1.TEST_IDS.sidebarSelect.trigger, ...(0, utils_1.extractSupportProps)(otherProps), children: [(0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { className: styles_module_scss_1.default.triggerText, text: selectedItem.item?.label || '' }), selectedItem.item?.afterContent, isOpen ? (0, jsx_runtime_1.jsx)(system_1.ChevronUpSVG, {}) : (0, jsx_runtime_1.jsx)(system_1.ChevronDownSVG, {})] }) }));
|
|
38
|
+
return ((0, jsx_runtime_1.jsx)(list_1.Droplist, { size: 'm', selection: { mode: 'single', value: selected, onChange: handleSelect }, items: allItems, open: isOpen, onOpenChange: setIsOpen, collapse: searchValue ? searchCollapseState : collapse || selectedCollapsedState, search: shouldShowSearch ? { value: searchValue, onChange: setSearchValue } : undefined, scrollToSelectedItem: true, children: (0, jsx_runtime_1.jsxs)("div", { role: 'button', tabIndex: 0, className: (0, classnames_1.default)(styles_module_scss_1.default.wrapper, className), "data-test-id": constants_1.TEST_IDS.sidebarSelect.trigger, ...(0, utils_1.extractSupportProps)(otherProps), children: [(0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { className: styles_module_scss_1.default.triggerText, text: selectedItem.item?.label || '' }), selectedItem.item?.afterContent, (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.chevron, children: isOpen ? (0, jsx_runtime_1.jsx)(system_1.ChevronUpSVG, {}) : (0, jsx_runtime_1.jsx)(system_1.ChevronDownSVG, {}) })] }) }));
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* Мобильный select-сайдбар. Форсирует `mobile`-раскладку через `withLayoutType`, чтобы адаптивный
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
.wrapper{
|
|
2
|
-
font-family:var(--sn-regular-body-
|
|
3
|
-
font-weight:var(--sn-regular-body-
|
|
4
|
-
line-height:var(--sn-regular-body-
|
|
5
|
-
font-size:var(--sn-regular-body-
|
|
6
|
-
letter-spacing:var(--sn-regular-body-
|
|
7
|
-
paragraph-spacing:var(--sn-regular-body-
|
|
2
|
+
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, SB Sans Interface));
|
|
3
|
+
font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
4
|
+
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-platform-comfort-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-24, 24px))));
|
|
5
|
+
font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-platform-comfort-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px))));
|
|
6
|
+
letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
7
|
+
paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
|
|
8
8
|
cursor:pointer;
|
|
9
9
|
display:flex;
|
|
10
|
-
gap:var(--sn-primitive-dimension-
|
|
10
|
+
gap:var(--sn-list-anatomy-size-m-listItem-gap, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-platform-comfort-spacing-control-wrapper-horizontal-m, var(--sn-platform-comfort-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))));
|
|
11
11
|
align-items:center;
|
|
12
|
-
|
|
13
|
-
padding:
|
|
14
|
-
color:var(--sn-theme-color-available-version-
|
|
12
|
+
box-sizing:border-box;
|
|
13
|
+
padding:var(--sn-list-anatomy-size-m-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-platform-comfort-spacing-control-container-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) var(--sn-list-anatomy-size-m-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-m, var(--sn-platform-comfort-spacing-control-container-horizontal-m, var(--sn-platform-comfort-scale-050-xs, var(--sn-primitive-dimension-8, 8px)))));
|
|
14
|
+
color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.triggerText{
|
|
18
18
|
flex-grow:1;
|
|
19
|
+
padding:var(--sn-list-anatomy-size-m-listItem-contentWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-platform-comfort-spacing-control-wrapper-horizontal-m, var(--sn-platform-comfort-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.chevron{
|
|
23
|
+
display:flex;
|
|
24
|
+
flex-shrink:0;
|
|
25
|
+
padding-block:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-platform-comfort-spacing-control-container-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px)))));
|
|
26
|
+
color:var(--sn-theme-color-available-version-textTertiary, var(--sn-brand-color-text-version-tertiary, rgba(65, 66, 78, 0.5490196078)));
|
|
19
27
|
}
|
|
@@ -9,7 +9,6 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
9
9
|
const system_1 = require("@cloud-ru/ds-icons/interface/system");
|
|
10
10
|
const list_1 = require("@cloud-ru/ds-list");
|
|
11
11
|
const tooltip_1 = require("@cloud-ru/ds-tooltip");
|
|
12
|
-
const classnames_1 = __importDefault(require("classnames"));
|
|
13
12
|
const react_1 = require("react");
|
|
14
13
|
const constants_1 = require("../../../constants");
|
|
15
14
|
const locale_1 = require("../../../locale");
|
|
@@ -31,7 +30,7 @@ function useTopPinnedContent(header, hasSearch) {
|
|
|
31
30
|
// Кнопка поиска живёт в `content` рядом с заголовком/полем, а не в `afterContent`:
|
|
32
31
|
// отдельный слот `afterContent` центрируется по-своему и ломает вертикальное
|
|
33
32
|
// выравнивание кнопки с полем.
|
|
34
|
-
content: ((0, jsx_runtime_1.jsxs)("div", { className:
|
|
33
|
+
content: ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.pinnedHeaderSlot, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.pinnedHeaderContent, children:
|
|
35
34
|
// При открытом поиске строка заголовка заменяется полем поиска (без наложения).
|
|
36
35
|
hasSearch && searchOpened ? ((0, jsx_runtime_1.jsx)(SidebarSearch_1.SidebarSearch, {})) : ((0, jsx_runtime_1.jsx)(SidebarTitle_1.SidebarTitle, { title: header.label, icon: header.icon, afterContent: header.afterContent })) }), hasSearch && (0, jsx_runtime_1.jsx)(SidebarSearchToggle_1.SidebarSearchToggle, {})] })),
|
|
37
36
|
inactive: true,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
.wrapper{
|
|
2
|
+
box-sizing:border-box;
|
|
2
3
|
width:256px;
|
|
3
4
|
}
|
|
4
5
|
.wrapper[data-collapsed]{
|
|
@@ -41,12 +42,15 @@
|
|
|
41
42
|
box-sizing:border-box;
|
|
42
43
|
padding:var(--sn-primitive-dimension-4, 4px) 0;
|
|
43
44
|
border-right:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-material-stateLayer-neutral-border-default-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-default-borderColor, rgba(159, 166, 198, 0.3019607843)));
|
|
44
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
45
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
45
46
|
}
|
|
46
47
|
.wrapper .content[data-collapsed]{
|
|
47
|
-
|
|
48
|
+
flex-shrink:0;
|
|
49
|
+
width:256px;
|
|
50
|
+
margin:var(--sn-primitive-dimension-4, 4px) 0 var(--sn-primitive-dimension-4, 4px) var(--sn-primitive-dimension-4, 4px);
|
|
48
51
|
border-right:none;
|
|
49
|
-
|
|
52
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
53
|
+
box-shadow:var(--sn-boxShadow-elevation-level3, var(--sn-theme-effect-shadow-level3-layer1-positionX, 0) var(--sn-theme-effect-shadow-level3-layer1-positionY, 0) var(--sn-theme-effect-shadow-level3-layer1-blur, 8px) var(--sn-theme-effect-shadow-level3-layer1-spread, 0) var(--sn-theme-effect-shadow-layer1Color, rgba(0, 0, 0, 0.0784313725)), var(--sn-theme-effect-shadow-level3-layer2-positionX, 0) var(--sn-theme-effect-shadow-level3-layer2-positionY, 8px) var(--sn-theme-effect-shadow-level3-layer2-blur, 16px) var(--sn-theme-effect-shadow-level3-layer2-spread, 2px) var(--sn-theme-effect-shadow-layer2Color, rgba(0, 0, 0, 0.0784313725)));
|
|
50
54
|
}
|
|
51
55
|
.wrapper .list{
|
|
52
56
|
position:relative;
|
|
@@ -70,7 +74,7 @@
|
|
|
70
74
|
}
|
|
71
75
|
|
|
72
76
|
.button{
|
|
73
|
-
background-color:var(--sn-theme-color-neutral-background2Level, var(--sn-brand-color-neutral-99, var(--sn-
|
|
77
|
+
background-color:var(--sn-theme-color-neutral-background2Level, var(--sn-brand-color-neutral-99, var(--sn-brand-palette-gray-99, #ffffff)));
|
|
74
78
|
}
|
|
75
79
|
|
|
76
80
|
.pinnedHeaderSlot{
|
|
@@ -79,14 +83,11 @@
|
|
|
79
83
|
gap:var(--sn-primitive-dimension-8, 8px);
|
|
80
84
|
align-items:center;
|
|
81
85
|
min-height:calc(var(--sn-primitive-dimension-44, 44px) - var(--sn-primitive-strokeWeight-strokeRegular, 1px));
|
|
86
|
+
padding-inline:var(--sn-primitive-dimension-4, 4px);
|
|
82
87
|
}
|
|
83
88
|
|
|
84
89
|
.pinnedHeaderContent{
|
|
85
90
|
display:flex;
|
|
86
91
|
flex-grow:1;
|
|
87
92
|
min-width:0;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.pinnedHeaderSlotSearch{
|
|
91
|
-
padding-inline:var(--sn-primitive-dimension-4, 4px);
|
|
92
93
|
}
|
|
@@ -23,5 +23,5 @@ function TreeNavigation({ header: { title, icon, description, status, actions },
|
|
|
23
23
|
const isFixed = mode === constants_1.TREE_NAVIGATION_MODE.Fixed;
|
|
24
24
|
const isAsideOpen = isFixed || (mode === constants_1.TREE_NAVIGATION_MODE.Aside && Boolean(open));
|
|
25
25
|
const menu = (0, react_1.useMemo)(() => ((0, jsx_runtime_1.jsx)(helperComponents_1.Menu, { menuItems: items, menuTitle: menuTitle, enableShrinkMenuButton: enableShrinkMenuButton, withDefaultOpenedMenuList: withDefaultOpenedMenuList, selected: selected, onSelect: onSelect })), [onSelect, selected, items, menuTitle, enableShrinkMenuButton, withDefaultOpenedMenuList]);
|
|
26
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.root, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.header, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleWrapper, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleInner, children: [!isFixed && ((0, jsx_runtime_1.jsx)(helperComponents_1.ConditionalPopover, { isOpen: Boolean(open), onOpenChange: setOpen, tip: menu, withPopover: mode === constants_1.TREE_NAVIGATION_MODE.Popover, children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.innerElement, children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.
|
|
26
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.root, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.header, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleWrapper, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleInner, children: [!isFixed && ((0, jsx_runtime_1.jsx)(helperComponents_1.ConditionalPopover, { isOpen: Boolean(open), onOpenChange: setOpen, tip: menu, withPopover: mode === constants_1.TREE_NAVIGATION_MODE.Popover, children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.innerElement, children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, size: button_1.SIZE.S, "aria-label": open ? t('TreeNavigation.closeMenu') : t('TreeNavigation.openMenu'), icon: open ? (0, jsx_runtime_1.jsx)(product_1.CloseSVG, {}) : (0, jsx_runtime_1.jsx)(product_1.BurgerSVG, {}), onClick: () => setOpen(!open) }) }) })), icon && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.innerElement, children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.icon, children: icon }) })), (0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.title, size: typography_1.SIZE.l, className: styles_module_scss_1.default.title, children: title }), status && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.innerElement, children: (0, jsx_runtime_1.jsx)(status_1.Status, { ...status }) }))] }), description && ((0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.body, size: typography_1.SIZE.s, className: styles_module_scss_1.default.description, children: description }))] }), actions && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.headerActions, children: actions })] }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.body, children: [isAsideOpen && (0, jsx_runtime_1.jsx)("aside", { className: styles_module_scss_1.default.sidebar, children: menu }), (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.main, contentClassName), children: content })] })] }));
|
|
27
27
|
}
|
package/dist/cjs/components/TreeNavigation/helperComponents/ConditionalPopover/ConditionalPopover.js
CHANGED
|
@@ -9,7 +9,7 @@ const popover_1 = require("@cloud-ru/ds-popover");
|
|
|
9
9
|
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
10
10
|
function ConditionalPopover({ tip, withPopover, isOpen, onOpenChange, children }) {
|
|
11
11
|
if (withPopover) {
|
|
12
|
-
return ((0, jsx_runtime_1.jsx)(popover_1.Popover, {
|
|
12
|
+
return ((0, jsx_runtime_1.jsx)(popover_1.Popover, { open: isOpen, onOpenChange: nextOpen => onOpenChange(nextOpen), content: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.content, children: tip }), trigger: popover_1.TRIGGER.Click, placement: popover_1.PLACEMENT.BottomStart, children: children }));
|
|
13
13
|
}
|
|
14
14
|
return children;
|
|
15
15
|
}
|
|
@@ -21,5 +21,5 @@ function Menu({ menuTitle, menuItems, enableShrinkMenuButton = true, withDefault
|
|
|
21
21
|
const handleExpandAll = () => setExpandedNodes((0, utils_1.getExpandedNodes)(menuItems));
|
|
22
22
|
const handleCollapseAll = () => setExpandedNodes([]);
|
|
23
23
|
const showSubheader = Boolean(menuTitle || enableShrinkMenuButton);
|
|
24
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.sidebar, children: [showSubheader && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.subheader, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.title, size: typography_1.SIZE.m, children: menuTitle }), enableShrinkMenuButton && ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.
|
|
24
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.sidebar, children: [showSubheader && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.subheader, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.title, size: typography_1.SIZE.m, children: menuTitle }), enableShrinkMenuButton && ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, size: 's', label: isExpanded ? t('TreeNavigation.collapseAll') : t('TreeNavigation.expandAll'), icon: isExpanded ? (0, jsx_runtime_1.jsx)(product_1.HorizontalMenuCloseSVG, {}) : (0, jsx_runtime_1.jsx)(product_1.HorizontalMenuOpenSVG, {}), onClick: isExpanded ? handleCollapseAll : handleExpandAll }))] })), (0, jsx_runtime_1.jsx)(tree_1.Tree, { data: menuItems, selectionMode: 'single', expandedNodes: expandedNodes, onExpand: setExpandedNodes, selected: selected, onSelect: onSelect })] }));
|
|
25
25
|
}
|