@cloud-ru/ds-uikit-product-page-layout 1.4.2-preview-a0540d7f.0 → 1.4.3
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/CHANGELOG.md +10 -0
- package/dist/cjs/components/PageForm/DesktopPageForm.js +2 -2
- package/dist/cjs/components/PageForm/MobilePageForm.js +1 -1
- package/dist/esm/components/PageForm/DesktopPageForm.js +2 -2
- package/dist/esm/components/PageForm/MobilePageForm.js +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +22 -22
- package/src/components/PageForm/DesktopPageForm.tsx +3 -3
- package/src/components/PageForm/MobilePageForm.tsx +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 1.4.3 (2026-09-18)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @ds/uikit-product-page-layout
|
|
9
|
+
|
|
10
|
+
## 1.4.2 (2026-09-14)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- **FF-9049:** use size l for page form footer buttons ([7321fa1](https://github.com/cloud-ru-tech/snack-v2/commit/7321fa13b4d887272a59ba725b72a752b551d84e))
|
|
15
|
+
|
|
6
16
|
## 1.4.1 (2026-09-10)
|
|
7
17
|
|
|
8
18
|
**Note:** Version bump only for package @ds/uikit-product-page-layout
|
|
@@ -23,9 +23,9 @@ function DesktopPageForm({ children, stepper, title, subtitle, className, footer
|
|
|
23
23
|
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.container, className), ...(0, utils_1.extractSupportProps)(rest), children: [(0, jsx_runtime_1.jsxs)(block_1.Block, { size: block_1.SIZE.L, className: styles_module_scss_1.default.form, contentClassName: styles_module_scss_1.default.formContent, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.headline, children: (0, jsx_runtime_1.jsx)(Headline_1.Headline, { title: title, subtitle: subtitle }) }), stepper, (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.body, children: children }), footer && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.footer, {
|
|
24
24
|
[styles_module_scss_1.default.footerSticky]: stickyFooter,
|
|
25
25
|
[styles_module_scss_1.default.footerStuck]: stickyFooter && !atBottom,
|
|
26
|
-
}), children: [footer.buttonSecondary && ((0, jsx_runtime_1.jsx)(SecondaryButton, { ...footer.buttonSecondary, size: button_1.SIZE.
|
|
26
|
+
}), children: [footer.buttonSecondary && ((0, jsx_runtime_1.jsx)(SecondaryButton, { ...footer.buttonSecondary, size: button_1.SIZE.L, appearance: button_1.APPEARANCE.Neutral, label: footer.buttonSecondary.variant === 'custom'
|
|
27
27
|
? footer.buttonSecondary.label
|
|
28
|
-
: getButtonLabel(footer.buttonSecondary.variant) })), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.mainActions, children: [footer.buttonAdditional && ((0, jsx_runtime_1.jsx)(AdditionalButton, { ...footer.buttonAdditional, size: button_1.SIZE.
|
|
28
|
+
: getButtonLabel(footer.buttonSecondary.variant) })), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.mainActions, children: [footer.buttonAdditional && ((0, jsx_runtime_1.jsx)(AdditionalButton, { ...footer.buttonAdditional, size: button_1.SIZE.L, appearance: button_1.APPEARANCE.Neutral })), (0, jsx_runtime_1.jsx)(PrimaryButton, { ...footer.buttonPrimary, size: button_1.SIZE.L, appearance: button_1.APPEARANCE.Primary, label: footer.buttonPrimary.variant === 'custom'
|
|
29
29
|
? footer.buttonPrimary.label
|
|
30
30
|
: getButtonLabel(footer.buttonPrimary.variant) })] })] }), stickyFooter && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("div", { ref: sentinelRef, className: styles_module_scss_1.default.footerSentinel, "aria-hidden": true }) }))] }))] }), moreItems.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.sideItems, children: moreItems.map((item, index) => ((0, jsx_runtime_1.jsx)("div", { children: item }, index))) }))] }));
|
|
31
31
|
}
|
|
@@ -50,7 +50,7 @@ function MobilePageFormBase({ children, title, subtitle, className, footer, step
|
|
|
50
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: 'm' }) })) : 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.l, className: mobileStyles_module_scss_1.default.priceSummaryTotal, children: priceSummary.total }), priceSummary.content && ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, size: 'm', icon: (0, jsx_runtime_1.jsx)(system_1.ChevronRightSVG, {}) }))] }) })] })), footer && ((0, jsx_runtime_1.jsx)(button_1.ButtonGroup, { 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: (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.l, className: mobileStyles_module_scss_1.default.priceSummaryTotal, children: priceSummary.total }), priceSummary.content && ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, size: 'm', icon: (0, jsx_runtime_1.jsx)(system_1.ChevronRightSVG, {}) }))] }) })] })), footer && ((0, jsx_runtime_1.jsx)(button_1.ButtonGroup, { size: 'l', 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];
|
|
@@ -17,9 +17,9 @@ export function DesktopPageForm({ children, stepper, title, subtitle, className,
|
|
|
17
17
|
return (_jsxs("div", { className: cn(styles.container, className), ...extractSupportProps(rest), children: [_jsxs(Block, { size: BLOCK_SIZE.L, className: styles.form, contentClassName: styles.formContent, children: [_jsx("div", { className: styles.headline, children: _jsx(Headline, { title: title, subtitle: subtitle }) }), stepper, _jsx("div", { className: styles.body, children: children }), footer && (_jsxs(_Fragment, { children: [_jsxs("div", { className: cn(styles.footer, {
|
|
18
18
|
[styles.footerSticky]: stickyFooter,
|
|
19
19
|
[styles.footerStuck]: stickyFooter && !atBottom,
|
|
20
|
-
}), children: [footer.buttonSecondary && (_jsx(SecondaryButton, { ...footer.buttonSecondary, size: SIZE.
|
|
20
|
+
}), children: [footer.buttonSecondary && (_jsx(SecondaryButton, { ...footer.buttonSecondary, size: SIZE.L, appearance: APPEARANCE.Neutral, label: footer.buttonSecondary.variant === 'custom'
|
|
21
21
|
? footer.buttonSecondary.label
|
|
22
|
-
: getButtonLabel(footer.buttonSecondary.variant) })), _jsxs("div", { className: styles.mainActions, children: [footer.buttonAdditional && (_jsx(AdditionalButton, { ...footer.buttonAdditional, size: SIZE.
|
|
22
|
+
: getButtonLabel(footer.buttonSecondary.variant) })), _jsxs("div", { className: styles.mainActions, children: [footer.buttonAdditional && (_jsx(AdditionalButton, { ...footer.buttonAdditional, size: SIZE.L, appearance: APPEARANCE.Neutral })), _jsx(PrimaryButton, { ...footer.buttonPrimary, size: SIZE.L, appearance: APPEARANCE.Primary, label: footer.buttonPrimary.variant === 'custom'
|
|
23
23
|
? footer.buttonPrimary.label
|
|
24
24
|
: getButtonLabel(footer.buttonPrimary.variant) })] })] }), stickyFooter && (_jsx(_Fragment, { children: _jsx("div", { ref: sentinelRef, className: styles.footerSentinel, "aria-hidden": true }) }))] }))] }), moreItems.length > 0 && (_jsx("div", { className: styles.sideItems, children: moreItems.map((item, index) => (_jsx("div", { children: item }, index))) }))] }));
|
|
25
25
|
}
|
|
@@ -44,7 +44,7 @@ function MobilePageFormBase({ children, title, subtitle, className, footer, step
|
|
|
44
44
|
})), children: _jsx(Button, { view: VIEW.Function, appearance: APPEARANCE.Neutral, icon: _jsx(KebabSVG, {}), size: 'm' }) })) : undefined }), stepper] }), sideBlock && (_jsx(ModalCustom, { open: openMoreContentIndex !== undefined, onClose: () => setOpenMoreContentIndex(undefined),
|
|
45
45
|
// Высоту листа задаёт сам sideBlock-элемент (`snapPoints`); напр. `[1]` — на всю высоту.
|
|
46
46
|
// По умолчанию — по высоте контента.
|
|
47
|
-
snapPoints: sideBlock[openMoreContentIndex ?? 0].snapPoints, children: _jsx(ModalCustom.Body, { content: sideBlock[openMoreContentIndex ?? 0].content }) })), _jsx("div", { className: styles.body, children: children }), (priceSummary || footer) && (_jsxs("div", { className: styles.footer, children: [priceSummary && (_jsxs("div", { className: styles.priceSummary, children: [_jsx(Typography, { variant: VARIANT.body, size: SIZE.m, className: styles.priceSummaryText, children: "\u041E\u0446\u0435\u043D\u043A\u0430 \u0431\u044E\u0434\u0436\u0435\u0442\u0430" }), _jsx(Dropdown, { open: openPriceSummary, onOpenChange: setOpenPriceSummary, content: _jsx("div", { className: styles.modalContent, children: priceSummary.content }), "data-test-id": TEST_IDS.pageForm.priceSummarySheet, children: _jsxs("div", { className: styles.priceSummaryRight, "data-test-id": TEST_IDS.pageForm.priceSummaryTrigger, children: [_jsx(Typography, { variant: VARIANT.label, size: SIZE.l, className: styles.priceSummaryTotal, children: priceSummary.total }), priceSummary.content && (_jsx(Button, { view: VIEW.Function, appearance: APPEARANCE.Neutral, size: 'm', icon: _jsx(ChevronRightSVG, {}) }))] }) })] })), footer && (_jsx(ButtonGroup, { size: '
|
|
47
|
+
snapPoints: sideBlock[openMoreContentIndex ?? 0].snapPoints, children: _jsx(ModalCustom.Body, { content: sideBlock[openMoreContentIndex ?? 0].content }) })), _jsx("div", { className: styles.body, children: children }), (priceSummary || footer) && (_jsxs("div", { className: styles.footer, children: [priceSummary && (_jsxs("div", { className: styles.priceSummary, children: [_jsx(Typography, { variant: VARIANT.body, size: SIZE.m, className: styles.priceSummaryText, children: "\u041E\u0446\u0435\u043D\u043A\u0430 \u0431\u044E\u0434\u0436\u0435\u0442\u0430" }), _jsx(Dropdown, { open: openPriceSummary, onOpenChange: setOpenPriceSummary, content: _jsx("div", { className: styles.modalContent, children: priceSummary.content }), "data-test-id": TEST_IDS.pageForm.priceSummarySheet, children: _jsxs("div", { className: styles.priceSummaryRight, "data-test-id": TEST_IDS.pageForm.priceSummaryTrigger, children: [_jsx(Typography, { variant: VARIANT.label, size: SIZE.l, className: styles.priceSummaryTotal, children: priceSummary.total }), priceSummary.content && (_jsx(Button, { view: VIEW.Function, appearance: APPEARANCE.Neutral, size: 'm', icon: _jsx(ChevronRightSVG, {}) }))] }) })] })), footer && (_jsx(ButtonGroup, { size: 'l', filled: true,
|
|
48
48
|
// 2 кнопки — в ряд (делят ширину); 3 — в столбик (правило футеров).
|
|
49
49
|
vertical: [footer.buttonPrimary, footer.buttonSecondary, footer.buttonAdditional].filter(Boolean).length >= 3, renderAction: (button, slot) => {
|
|
50
50
|
const tooltip = footerTooltips?.[slot];
|