@gravity-ui/dynamic-forms 5.0.0-beta.0 → 5.1.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/build/cjs/lib/core/components/Form/hooks/useSearch/useSearch.css +1 -1
- package/build/cjs/lib/kit/components/AccordeonCard/AccordeonCard.css +1 -1
- package/build/cjs/lib/kit/components/Card/Card.css +2 -2
- package/build/cjs/lib/kit/components/CopyButton/CopyButton.css +1 -1
- package/build/cjs/lib/kit/components/GroupIndent/GroupIndent.css +3 -3
- package/build/cjs/lib/kit/components/Inputs/ArrayBase/ArrayBase.css +2 -2
- package/build/cjs/lib/kit/components/Inputs/CardOneOf/CardOneOf.js +8 -2
- package/build/cjs/lib/kit/components/Inputs/CheckboxGroup/CheckboxGroup.css +3 -3
- package/build/cjs/lib/kit/components/Inputs/FileInput/FileInput.css +1 -1
- package/build/cjs/lib/kit/components/Inputs/MonacoInput/MonacoHeader.css +1 -1
- package/build/cjs/lib/kit/components/Inputs/MonacoInput/MonacoInputDialog.css +1 -1
- package/build/cjs/lib/kit/components/Inputs/MultiOneOf/MultiOneOf.css +1 -1
- package/build/cjs/lib/kit/components/Inputs/NumberWithScale/NumberWithScale.css +1 -1
- package/build/cjs/lib/kit/components/Inputs/OneOf/OneOf.css +4 -4
- package/build/cjs/lib/kit/components/Inputs/TableArrayInput/TableArrayInput.css +2 -2
- package/build/cjs/lib/kit/components/Inputs/TextContent/TextContent.js +1 -1
- package/build/cjs/lib/kit/components/Layouts/Accordeon/Accordeon.js +2 -1
- package/build/cjs/lib/kit/components/Layouts/Column/Column.css +4 -4
- package/build/cjs/lib/kit/components/Layouts/Row/Row.css +6 -6
- package/build/cjs/lib/kit/components/Layouts/Section/Section.css +2 -2
- package/build/cjs/lib/kit/components/Layouts/Section/Section.js +21 -2
- package/build/cjs/lib/kit/components/Layouts/Transparent/Transparent.css +2 -2
- package/build/cjs/lib/kit/components/SimpleVerticalAccordeon/SimpleVerticalAccordeon.css +4 -4
- package/build/cjs/lib/kit/components/SimpleVerticalAccordeon/SimpleVerticalAccordeon.js +2 -2
- package/build/cjs/lib/kit/components/TogglerCard/TogglerCard.css +2 -2
- package/build/cjs/lib/kit/components/ViewLayouts/ViewAccordeon/ViewAccordeon.js +2 -1
- package/build/cjs/lib/kit/components/ViewLayouts/ViewColumn/ViewColumn.css +1 -1
- package/build/cjs/lib/kit/components/ViewLayouts/ViewRow/ViewRow.css +1 -1
- package/build/cjs/lib/kit/components/ViewLayouts/ViewTableCell/ViewTableCell.css +1 -1
- package/build/cjs/lib/kit/components/Views/ArrayBaseView/ArrayBaseView.css +1 -1
- package/build/cjs/lib/kit/components/Views/CardOneOfView.js +13 -3
- package/build/cjs/lib/kit/components/Views/CheckboxGroupView/CheckboxGroupView.css +2 -2
- package/build/cjs/lib/kit/components/Views/MonacoInputView/MonacoViewDialog.css +1 -1
- package/build/cjs/lib/kit/components/Views/TableArrayView/TableArrayView.css +1 -1
- package/build/cjs/lib/kit/components/Views/TextAreaView/TextAreaView.css +1 -1
- package/build/cjs/lib/kit/hooks/useOneOf/useOneOf.css +1 -1
- package/build/cjs/lib/kit/utils/common.js +9 -8
- package/build/esm/lib/core/components/Form/hooks/useSearch/useSearch.css +1 -1
- package/build/esm/lib/core/components/View/types/layout.d.ts +1 -1
- package/build/esm/lib/core/components/View/types/views.d.ts +1 -1
- package/build/esm/lib/core/types/specs.d.ts +2 -1
- package/build/esm/lib/kit/components/AccordeonCard/AccordeonCard.css +1 -1
- package/build/esm/lib/kit/components/Card/Card.css +2 -2
- package/build/esm/lib/kit/components/CopyButton/CopyButton.css +1 -1
- package/build/esm/lib/kit/components/GroupIndent/GroupIndent.css +3 -3
- package/build/esm/lib/kit/components/Inputs/ArrayBase/ArrayBase.css +2 -2
- package/build/esm/lib/kit/components/Inputs/CardOneOf/CardOneOf.js +8 -2
- package/build/esm/lib/kit/components/Inputs/CheckboxGroup/CheckboxGroup.css +3 -3
- package/build/esm/lib/kit/components/Inputs/FileInput/FileInput.css +1 -1
- package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoHeader.css +1 -1
- package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoInputDialog.css +1 -1
- package/build/esm/lib/kit/components/Inputs/MultiOneOf/MultiOneOf.css +1 -1
- package/build/esm/lib/kit/components/Inputs/NumberWithScale/NumberWithScale.css +1 -1
- package/build/esm/lib/kit/components/Inputs/OneOf/OneOf.css +4 -4
- package/build/esm/lib/kit/components/Inputs/TableArrayInput/TableArrayInput.css +2 -2
- package/build/esm/lib/kit/components/Inputs/TextContent/TextContent.js +1 -1
- package/build/esm/lib/kit/components/Layouts/Accordeon/Accordeon.d.ts +6 -1
- package/build/esm/lib/kit/components/Layouts/Accordeon/Accordeon.js +2 -1
- package/build/esm/lib/kit/components/Layouts/Column/Column.css +4 -4
- package/build/esm/lib/kit/components/Layouts/Row/Row.css +6 -6
- package/build/esm/lib/kit/components/Layouts/Section/Section.css +2 -2
- package/build/esm/lib/kit/components/Layouts/Section/Section.js +21 -2
- package/build/esm/lib/kit/components/Layouts/Transparent/Transparent.css +2 -2
- package/build/esm/lib/kit/components/SimpleVerticalAccordeon/SimpleVerticalAccordeon.css +4 -4
- package/build/esm/lib/kit/components/SimpleVerticalAccordeon/SimpleVerticalAccordeon.d.ts +2 -0
- package/build/esm/lib/kit/components/SimpleVerticalAccordeon/SimpleVerticalAccordeon.js +2 -2
- package/build/esm/lib/kit/components/TogglerCard/TogglerCard.css +2 -2
- package/build/esm/lib/kit/components/ViewLayouts/ViewAccordeon/ViewAccordeon.d.ts +7 -2
- package/build/esm/lib/kit/components/ViewLayouts/ViewAccordeon/ViewAccordeon.js +2 -1
- package/build/esm/lib/kit/components/ViewLayouts/ViewColumn/ViewColumn.css +1 -1
- package/build/esm/lib/kit/components/ViewLayouts/ViewRow/ViewRow.css +1 -1
- package/build/esm/lib/kit/components/ViewLayouts/ViewTableCell/ViewTableCell.css +1 -1
- package/build/esm/lib/kit/components/Views/ArrayBaseView/ArrayBaseView.css +1 -1
- package/build/esm/lib/kit/components/Views/CardOneOfView.js +13 -3
- package/build/esm/lib/kit/components/Views/CheckboxGroupView/CheckboxGroupView.css +2 -2
- package/build/esm/lib/kit/components/Views/MonacoInputView/MonacoViewDialog.css +1 -1
- package/build/esm/lib/kit/components/Views/TableArrayView/TableArrayView.css +1 -1
- package/build/esm/lib/kit/components/Views/TextAreaView/TextAreaView.css +1 -1
- package/build/esm/lib/kit/hooks/useOneOf/useOneOf.css +1 -1
- package/build/esm/lib/kit/utils/common.js +9 -8
- package/package.json +4 -4
|
@@ -42,7 +42,7 @@ const isNotEmptyValue = (value, spec) => {
|
|
|
42
42
|
};
|
|
43
43
|
exports.isNotEmptyValue = isNotEmptyValue;
|
|
44
44
|
const prepareSpec = (spec, parseJsonDefaultValue, overridePatternError) => {
|
|
45
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
45
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
46
46
|
if ((0, isObjectLike_1.default)(spec)) {
|
|
47
47
|
const result = (0, cloneDeep_1.default)(spec);
|
|
48
48
|
if ((0, isString_1.default)(result.type)) {
|
|
@@ -54,7 +54,7 @@ const prepareSpec = (spec, parseJsonDefaultValue, overridePatternError) => {
|
|
|
54
54
|
try {
|
|
55
55
|
_defaultValue = JSON.parse(result.defaultValue);
|
|
56
56
|
}
|
|
57
|
-
catch (
|
|
57
|
+
catch (_m) {
|
|
58
58
|
_defaultValue = undefined;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -75,20 +75,21 @@ const prepareSpec = (spec, parseJsonDefaultValue, overridePatternError) => {
|
|
|
75
75
|
if ((0, isString_1.default)((_c = result.viewSpec) === null || _c === void 0 ? void 0 : _c.addButtonPosition)) {
|
|
76
76
|
result.viewSpec.addButtonPosition = result.viewSpec.addButtonPosition.toLowerCase();
|
|
77
77
|
}
|
|
78
|
-
if ((0, isString_1.default)((_d = result.viewSpec) === null || _d === void 0 ? void 0 : _d.
|
|
79
|
-
result.viewSpec.textContentParams = Object.assign(Object.assign({}, result.viewSpec.textContentParams), { themeLabel: result.viewSpec.themeLabel.toLowerCase() });
|
|
80
|
-
}
|
|
81
|
-
if ((0, isString_1.default)((_f = (_e = result.viewSpec) === null || _e === void 0 ? void 0 : _e.oneOfParams) === null || _f === void 0 ? void 0 : _f.toggler)) {
|
|
78
|
+
if ((0, isString_1.default)((_e = (_d = result.viewSpec) === null || _d === void 0 ? void 0 : _d.oneOfParams) === null || _e === void 0 ? void 0 : _e.toggler)) {
|
|
82
79
|
result.viewSpec.oneOfParams.toggler = result.viewSpec.oneOfParams.toggler.toLowerCase();
|
|
83
80
|
}
|
|
84
|
-
if ((0, isString_1.default)((
|
|
81
|
+
if ((0, isString_1.default)((_g = (_f = result.viewSpec) === null || _f === void 0 ? void 0 : _f.textContentParams) === null || _g === void 0 ? void 0 : _g.themeLabel)) {
|
|
85
82
|
result.viewSpec.textContentParams.themeLabel =
|
|
86
83
|
result.viewSpec.textContentParams.themeLabel.toLowerCase();
|
|
87
84
|
}
|
|
88
|
-
if ((0, isString_1.default)((
|
|
85
|
+
if ((0, isString_1.default)((_j = (_h = result.viewSpec) === null || _h === void 0 ? void 0 : _h.textContentParams) === null || _j === void 0 ? void 0 : _j.themeAlert)) {
|
|
89
86
|
result.viewSpec.textContentParams.themeAlert =
|
|
90
87
|
result.viewSpec.textContentParams.themeAlert.toLowerCase();
|
|
91
88
|
}
|
|
89
|
+
if ((0, isString_1.default)((_l = (_k = result.viewSpec) === null || _k === void 0 ? void 0 : _k.textContentParams) === null || _l === void 0 ? void 0 : _l.viewAlert)) {
|
|
90
|
+
result.viewSpec.textContentParams.viewAlert =
|
|
91
|
+
result.viewSpec.textContentParams.viewAlert.toLowerCase();
|
|
92
|
+
}
|
|
92
93
|
if ((0, isString_1.default)(result.validator)) {
|
|
93
94
|
result.validator = result.validator.toLowerCase();
|
|
94
95
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FormValue, Spec } from '../../../';
|
|
3
3
|
import { ViewProps } from './';
|
|
4
|
-
export type ViewLayoutProps<Value extends FormValue, SpecType extends Spec> = {
|
|
4
|
+
export type ViewLayoutProps<Value extends FormValue, SpecType extends Spec<undefined, undefined, Record<string, any> | undefined> = Spec> = {
|
|
5
5
|
children: React.ReactElement;
|
|
6
6
|
} & ViewProps<Value, SpecType>;
|
|
7
7
|
export type ViewLayoutType<Value extends FormValue, SpecType extends Spec> = (props: ViewLayoutProps<Value, SpecType>) => React.ReactElement | null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FormValue, Spec } from '../../../';
|
|
3
3
|
import { ViewLayoutType } from './';
|
|
4
|
-
export type ViewProps<Value extends FormValue, SpecType extends Spec> = {
|
|
4
|
+
export type ViewProps<Value extends FormValue, SpecType extends Spec<undefined, undefined, Record<string, any> | undefined> = Spec> = {
|
|
5
5
|
spec: SpecType;
|
|
6
6
|
name: string;
|
|
7
7
|
value?: Value;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AlertProps, LabelProps } from '@gravity-ui/uikit';
|
|
1
|
+
import type { AlertProps, LabelProps } from '@gravity-ui/uikit';
|
|
2
2
|
import { ColorTextBaseProps } from '@gravity-ui/uikit/build/esm/components/Text/colorText/colorText';
|
|
3
3
|
import { ReadAsMethod, SpecTypes } from '../constants';
|
|
4
4
|
import { ArrayValue, ObjectValue } from './';
|
|
@@ -151,6 +151,7 @@ export interface StringSpec<LinkType = any, InputComponentProps extends Record<s
|
|
|
151
151
|
iconColor?: ColorTextBaseProps['color'];
|
|
152
152
|
titleAlert?: string;
|
|
153
153
|
themeAlert?: AlertProps['theme'];
|
|
154
|
+
viewAlert?: AlertProps['view'];
|
|
154
155
|
};
|
|
155
156
|
fileInput?: {
|
|
156
157
|
accept?: string;
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
order: 1;
|
|
89
89
|
}
|
|
90
90
|
.df-accordeon-card__interal-actions {
|
|
91
|
-
margin-right: var(--df-accordeon-card-interal-actions-margin-right,
|
|
91
|
+
margin-right: var(--df-accordeon-card-interal-actions-margin-right, var(--g-spacing-1));
|
|
92
92
|
}
|
|
93
93
|
.df-accordeon-card__toggle-icon_open {
|
|
94
94
|
transform: rotate(180deg);
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
align-items: center;
|
|
65
65
|
}
|
|
66
66
|
.df-card__header-right > * {
|
|
67
|
-
margin-left: var(--df-card-header-right-child-margin-left,
|
|
67
|
+
margin-left: var(--df-card-header-right-child-margin-left, var(--g-spacing-2));
|
|
68
68
|
}
|
|
69
69
|
.df-card__title {
|
|
70
70
|
max-width: var(--df-card-title-max-width, 533px);
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
max-width: 300px;
|
|
77
77
|
}
|
|
78
78
|
.df-card__note {
|
|
79
|
-
margin-left: var(--df-card-note-margin-left,
|
|
79
|
+
margin-left: var(--df-card-note-margin-left, var(--g-spacing-1));
|
|
80
80
|
}
|
|
81
81
|
.df-card__note .gc-help-popover {
|
|
82
82
|
display: flex;
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
*/
|
|
19
19
|
/* Border-radius */
|
|
20
20
|
.df-group-indent {
|
|
21
|
-
padding: var(--df-group-indent-padding,
|
|
22
|
-
margin: var(--df-group-indent-margin, -
|
|
21
|
+
padding: var(--df-group-indent-padding, var(--g-spacing-3) var(--g-spacing-0) var(--g-spacing-0) var(--g-spacing-5));
|
|
22
|
+
margin: var(--df-group-indent-margin, calc(-1 * var(--g-spacing-3)) var(--g-spacing-0) var(--g-spacing-0) var(--g-spacing-1));
|
|
23
23
|
border-left: 1px solid var(--g-color-line-generic-accent);
|
|
24
24
|
}
|
|
25
25
|
.df-group-indent:last-child {
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
display: none;
|
|
30
30
|
}
|
|
31
31
|
.df-group-indent > .df-simple-vertical-accordeon_view {
|
|
32
|
-
margin-top: var(--df-group-indent-simple-vertical-accordeon-view-margin-top, -
|
|
32
|
+
margin-top: var(--df-group-indent-simple-vertical-accordeon-view-margin-top, calc(-1 * var(--g-spacing-3)));
|
|
33
33
|
}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
align-items: flex-end;
|
|
26
26
|
}
|
|
27
27
|
.df-array-base__items-wrapper_add-button-down {
|
|
28
|
-
margin-bottom: var(--df-spacing-inputs,
|
|
28
|
+
margin-bottom: var(--df-spacing-inputs, var(--g-spacing-4));
|
|
29
29
|
}
|
|
30
30
|
.df-array-base__items-wrapper_items-primitive {
|
|
31
31
|
min-width: var(--df-array-base-items-primitive-min-width, 100%);
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
min-width: unset;
|
|
35
35
|
}
|
|
36
36
|
.df-array-base__item-prefix {
|
|
37
|
-
margin: var(--df-array-base-item-prefix-margin, -
|
|
37
|
+
margin: var(--df-array-base-item-prefix-margin, calc(-1 * var(--g-spacing-2)) var(--g-spacing-0) var(--g-spacing-2));
|
|
38
38
|
}
|
|
39
39
|
.df-array-base__add-button_right {
|
|
40
40
|
margin-left: var(--df-array-base-add-button-right-margin-left, var(--g-spacing-1));
|
|
@@ -7,7 +7,7 @@ import { Row } from '../../Layouts';
|
|
|
7
7
|
import { RemoveButton } from '../../RemoveButton';
|
|
8
8
|
export const CardOneOf = (props) => {
|
|
9
9
|
var _a;
|
|
10
|
-
const { input, meta, spec, name } = props;
|
|
10
|
+
const { input, meta, spec, name, Layout } = props;
|
|
11
11
|
const [open, setOpen] = React.useState(true);
|
|
12
12
|
const onToggle = React.useCallback(() => setOpen((f) => !f), [setOpen]);
|
|
13
13
|
const onOpen = React.useCallback(() => setOpen(true), [setOpen]);
|
|
@@ -15,7 +15,13 @@ export const CardOneOf = (props) => {
|
|
|
15
15
|
props,
|
|
16
16
|
onTogglerChange: onOpen,
|
|
17
17
|
});
|
|
18
|
-
const toggler = React.useMemo(() =>
|
|
18
|
+
const toggler = React.useMemo(() => {
|
|
19
|
+
const togglerProps = Object.assign(Object.assign({}, props), { name: '__stub-name', children: togglerInput });
|
|
20
|
+
if (Layout) {
|
|
21
|
+
return React.createElement(Layout, Object.assign({}, togglerProps));
|
|
22
|
+
}
|
|
23
|
+
return React.createElement(Row, Object.assign({}, togglerProps));
|
|
24
|
+
}, [togglerInput, props, Layout]);
|
|
19
25
|
const actions = React.useMemo(() => {
|
|
20
26
|
if (isArrayItem(name)) {
|
|
21
27
|
return React.createElement(RemoveButton, { onDrop: input.onDrop, name: name });
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
height: var(--df-checkbox-height, 28px);
|
|
24
24
|
}
|
|
25
25
|
.df-checkbox-group .g-control-label__text {
|
|
26
|
-
margin-inline-start: var(--df-checkbox-margint-start,
|
|
26
|
+
margin-inline-start: var(--df-checkbox-margint-start, var(--g-spacing-1));
|
|
27
27
|
}
|
|
28
28
|
.df-checkbox-group > *:not(:last-child) {
|
|
29
|
-
margin-right: var(--df-checkbox-group-child-margin-right,
|
|
29
|
+
margin-right: var(--df-checkbox-group-child-margin-right, var(--g-spacing-3));
|
|
30
30
|
}
|
|
31
31
|
.df-checkbox-group_vertical {
|
|
32
32
|
flex-direction: column;
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
height: auto;
|
|
36
36
|
}
|
|
37
37
|
.df-checkbox-group_vertical > *:not(:last-child) {
|
|
38
|
-
margin: var(--df-checkbox-group-vertical-child-margin, var(--g-spacing-0) var(--g-spacing-0)
|
|
38
|
+
margin: var(--df-checkbox-group-vertical-child-margin, var(--g-spacing-0) var(--g-spacing-0) var(--g-spacing-2));
|
|
39
39
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
height: var(--df-monaco-header-height, 52px);
|
|
22
22
|
display: flex;
|
|
23
23
|
justify-content: space-between;
|
|
24
|
-
padding: var(--df-monaco-header-padding,
|
|
24
|
+
padding: var(--df-monaco-header-padding, var(--g-spacing-4));
|
|
25
25
|
align-items: center;
|
|
26
26
|
background-color: var(--g-color-base-float-hover);
|
|
27
27
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
/* Border-radius */
|
|
20
20
|
.df-monaco-input-dialog .g-dialog-footer {
|
|
21
|
-
padding: var(--df-monaco-input-dialog-dialog-footer-padding,
|
|
21
|
+
padding: var(--df-monaco-input-dialog-dialog-footer-padding, var(--g-spacing-2) var(--g-spacing-8) var(--g-spacing-8));
|
|
22
22
|
}
|
|
23
23
|
.df-monaco-input-dialog__container {
|
|
24
24
|
border: 1px solid var(--g-color-line-generic);
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
padding: var(--df-multi-oneof-content-flat-padding, var(--g-spacing-0));
|
|
27
27
|
}
|
|
28
28
|
.df-multi-oneof__content_flat > .df-group-indent > .df-use-search {
|
|
29
|
-
margin-top: var(--df-spacing-inputs,
|
|
29
|
+
margin-top: var(--df-spacing-inputs, var(--g-spacing-4));
|
|
30
30
|
}
|
|
31
31
|
.df-multi-oneof__content_flat > .df-group-indent > .df-use-search:empty {
|
|
32
32
|
display: none;
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
all: unset;
|
|
29
29
|
}
|
|
30
30
|
.df-oneof_base > .df-group-indent > .df-use-search {
|
|
31
|
-
padding: var(--df-oneof-base-padding,
|
|
32
|
-
margin: var(--df-oneof-base-margin, var(--g-spacing-1) var(--g-spacing-0) var(--g-spacing-5)
|
|
31
|
+
padding: var(--df-oneof-base-padding, var(--g-spacing-3) var(--g-spacing-0) var(--g-spacing-0) var(--g-spacing-5));
|
|
32
|
+
margin: var(--df-oneof-base-margin, var(--g-spacing-1) var(--g-spacing-0) var(--g-spacing-5) var(--g-spacing-1));
|
|
33
33
|
border-left: 1px solid var(--g-color-line-generic-accent);
|
|
34
34
|
}
|
|
35
35
|
.df-oneof_base > .df-group-indent > .df-use-search:empty {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
margin-bottom: var(--df-spacing-last-child, var(--g-spacing-0));
|
|
40
40
|
}
|
|
41
41
|
.df-oneof_base > .df-group-indent > .df-use-search > .df-simple-vertical-accordeon_view {
|
|
42
|
-
margin-top: var(--df-oneof-base-simple-vertical-accordeon-margin-top, -
|
|
42
|
+
margin-top: var(--df-oneof-base-simple-vertical-accordeon-margin-top, calc(-1 * var(--g-spacing-3)));
|
|
43
43
|
}
|
|
44
44
|
.df-oneof_flat > .df-group-indent {
|
|
45
45
|
margin: var(--df-oneof-flat-margin, var(--g-spacing-0));
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
padding: var(--df-oneof-flat-padding, var(--g-spacing-0));
|
|
48
48
|
}
|
|
49
49
|
.df-oneof_flat > .df-group-indent > .df-use-search {
|
|
50
|
-
margin-top: var(--df-spacing-inputs,
|
|
50
|
+
margin-top: var(--df-spacing-inputs, var(--g-spacing-4));
|
|
51
51
|
}
|
|
52
52
|
.df-oneof_flat > .df-group-indent > .df-use-search:empty {
|
|
53
53
|
display: none;
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
/* Border-radius */
|
|
20
20
|
.df-table-array__table {
|
|
21
|
-
margin-bottom: var(--df-table-array-table-margin-bottom,
|
|
21
|
+
margin-bottom: var(--df-table-array-table-margin-bottom, var(--g-spacing-2));
|
|
22
22
|
}
|
|
23
23
|
.df-table-array__table .g-table__cell {
|
|
24
24
|
border-bottom: 0px transparent;
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
min-width: var(--df-table-array-cell-min-width, 150px);
|
|
41
41
|
}
|
|
42
42
|
.df-table-array__cell_arr, .df-table-array__cell_obj {
|
|
43
|
-
padding-left: var(--df-table-array-cell-obj-padding-left,
|
|
43
|
+
padding-left: var(--df-table-array-cell-obj-padding-left, var(--g-spacing-half));
|
|
44
44
|
}
|
|
45
45
|
.df-table-array__cell_arr .yc-text-input,
|
|
46
46
|
.df-table-array__cell_arr .g-text-input,
|
|
@@ -22,7 +22,7 @@ export const TextContentComponent = ({ spec, value, Layout, }) => {
|
|
|
22
22
|
: undefined;
|
|
23
23
|
content = (React.createElement(Alert, { icon: iconLib, message: content,
|
|
24
24
|
// If the title is an empty line, then you need to explicitly write undefined, otherwise there will be an additional indent
|
|
25
|
-
title: titleAlert, theme: textContentParams === null || textContentParams === void 0 ? void 0 : textContentParams.themeAlert }));
|
|
25
|
+
title: titleAlert, theme: textContentParams === null || textContentParams === void 0 ? void 0 : textContentParams.themeAlert, view: textContentParams === null || textContentParams === void 0 ? void 0 : textContentParams.viewAlert }));
|
|
26
26
|
}
|
|
27
27
|
else if (textContentParams === null || textContentParams === void 0 ? void 0 : textContentParams.themeLabel) {
|
|
28
28
|
content = (React.createElement(Label, { size: "m", theme: textContentParams.themeLabel, className: b(), value: value, icon: iconLib }, content));
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
+
import { TextProps } from '@gravity-ui/uikit';
|
|
1
2
|
import { ArrayLayoutProps, ObjectLayoutProps } from '../../../../core';
|
|
2
|
-
|
|
3
|
+
interface AccordeonLayoutProps {
|
|
4
|
+
variantTitle?: TextProps['variant'];
|
|
5
|
+
}
|
|
6
|
+
export declare const Accordeon: <T extends ArrayLayoutProps<Record<string, any> | undefined, AccordeonLayoutProps | undefined> | ObjectLayoutProps<Record<string, any> | undefined, AccordeonLayoutProps | undefined>>({ name, spec, input, meta, children, }: T) => JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -6,6 +6,7 @@ import { RemoveButton } from '../../RemoveButton';
|
|
|
6
6
|
import { SimpleVerticalAccordeon } from '../../SimpleVerticalAccordeon';
|
|
7
7
|
export const Accordeon = ({ name, spec, input, meta, children, }) => {
|
|
8
8
|
var _a;
|
|
9
|
+
const { variantTitle } = spec.viewSpec.layoutProps || {};
|
|
9
10
|
const [open, setOpen] = React.useState(Boolean((_a = spec.viewSpec) === null || _a === void 0 ? void 0 : _a.layoutOpen));
|
|
10
11
|
const onDrop = React.useCallback(() => {
|
|
11
12
|
setOpen(false);
|
|
@@ -18,6 +19,6 @@ export const Accordeon = ({ name, spec, input, meta, children, }) => {
|
|
|
18
19
|
return React.createElement(RemoveButton, { name: name, onDrop: onDrop });
|
|
19
20
|
}, [spec.required, input.value, onDrop, name]);
|
|
20
21
|
useErrorChecker({ name, meta, open, setOpen });
|
|
21
|
-
return (React.createElement(SimpleVerticalAccordeon, { name: name, title: spec.viewSpec.layoutTitle || '', note: spec.viewSpec.layoutDescription || '', open: open, onOpenChange: setOpen, headerActionsTemplate: removeButton, hideInsteadOfDestroy: true, withBranchView: true },
|
|
22
|
+
return (React.createElement(SimpleVerticalAccordeon, { name: name, title: spec.viewSpec.layoutTitle || '', note: spec.viewSpec.layoutDescription || '', open: open, onOpenChange: setOpen, headerActionsTemplate: removeButton, hideInsteadOfDestroy: true, withBranchView: true, variantTitle: variantTitle },
|
|
22
23
|
React.createElement(ErrorWrapper, { name: name, meta: meta, withoutChildErrorStyles: true }, children)));
|
|
23
24
|
};
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
/* Border-radius */
|
|
20
20
|
.df-column {
|
|
21
|
-
margin-bottom: var(--df-spacing-inputs,
|
|
21
|
+
margin-bottom: var(--df-spacing-inputs, var(--g-spacing-4));
|
|
22
22
|
}
|
|
23
23
|
.df-column:last-child {
|
|
24
24
|
margin-bottom: var(--df-spacing-last-child, var(--g-spacing-0));
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
}
|
|
43
43
|
.df-column__title {
|
|
44
44
|
word-break: break-word;
|
|
45
|
-
margin-right: var(--df-column-title-margin-right,
|
|
45
|
+
margin-right: var(--df-column-title-margin-right, var(--g-spacing-half));
|
|
46
46
|
}
|
|
47
47
|
.df-column__title_required::after {
|
|
48
48
|
content: "*";
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
}
|
|
54
54
|
.df-column__note-inner {
|
|
55
55
|
position: absolute;
|
|
56
|
-
margin-top: var(--df-column-note-inner-margin-top,
|
|
56
|
+
margin-top: var(--df-column-note-inner-margin-top, var(--g-spacing-0));
|
|
57
57
|
}
|
|
58
58
|
.df-column__note-inner .g-help-popover {
|
|
59
59
|
display: flex;
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
justify-content: space-around;
|
|
72
72
|
}
|
|
73
73
|
.df-column__remove-button {
|
|
74
|
-
margin-left: var(--df-remove-button-margin-left,
|
|
74
|
+
margin-left: var(--df-remove-button-margin-left, var(--g-spacing-1));
|
|
75
75
|
}
|
|
76
76
|
.df-column__required-mark {
|
|
77
77
|
color: var(--g-color-text-danger);
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
display: flex;
|
|
22
22
|
width: var(--df-row-width, 500px);
|
|
23
23
|
max-width: var(--df-row-max-width, 500px);
|
|
24
|
-
margin-bottom: var(--df-spacing-inputs,
|
|
24
|
+
margin-bottom: var(--df-spacing-inputs, var(--g-spacing-4));
|
|
25
25
|
}
|
|
26
26
|
.df-row:last-child {
|
|
27
27
|
margin-bottom: var(--df-spacing-last-child, var(--g-spacing-0));
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
}
|
|
47
47
|
.df-row__title {
|
|
48
48
|
word-break: break-word;
|
|
49
|
-
margin-right: var(--df-row-title-margin-right,
|
|
49
|
+
margin-right: var(--df-row-title-margin-right, var(--g-spacing-half));
|
|
50
50
|
}
|
|
51
51
|
.df-row__title_required::after {
|
|
52
52
|
content: "*";
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
}
|
|
59
59
|
.df-row__note-inner {
|
|
60
60
|
position: absolute;
|
|
61
|
-
margin-top: var(--df-row-note-inner-margin-top,
|
|
61
|
+
margin-top: var(--df-row-note-inner-margin-top, var(--g-spacing-0));
|
|
62
62
|
}
|
|
63
63
|
.df-row__note-inner .g-help-popover {
|
|
64
64
|
display: flex;
|
|
@@ -70,19 +70,19 @@
|
|
|
70
70
|
display: flex;
|
|
71
71
|
flex-direction: column;
|
|
72
72
|
flex-grow: 1;
|
|
73
|
-
margin-left: var(--df-row-right-margin-left,
|
|
73
|
+
margin-left: var(--df-row-right-margin-left, var(--g-spacing-4));
|
|
74
74
|
}
|
|
75
75
|
.df-row__right-inner {
|
|
76
76
|
display: flex;
|
|
77
77
|
justify-content: space-around;
|
|
78
78
|
}
|
|
79
79
|
.df-row__description {
|
|
80
|
-
margin-top: var(--df-row-description-margin-top,
|
|
80
|
+
margin-top: var(--df-row-description-margin-top, var(--g-spacing-2));
|
|
81
81
|
color: var(--g-color-text-secondary);
|
|
82
82
|
word-break: break-word;
|
|
83
83
|
}
|
|
84
84
|
.df-row__remove-button {
|
|
85
|
-
margin-left: var(--df-remove-button-margin-left,
|
|
85
|
+
margin-left: var(--df-remove-button-margin-left, var(--g-spacing-1));
|
|
86
86
|
}
|
|
87
87
|
.df-row__required-mark {
|
|
88
88
|
color: var(--g-color-text-danger);
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
max-width: 300px;
|
|
44
44
|
}
|
|
45
45
|
.df-section__note {
|
|
46
|
-
margin-left: var(--df-section-note-margin-left,
|
|
46
|
+
margin-left: var(--df-section-note-margin-left, var(--g-spacing-1));
|
|
47
47
|
}
|
|
48
48
|
.df-section__note .g-help-popover {
|
|
49
49
|
display: flex;
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
margin-top: var(--df-section-description-margin-top, var(--g-spacing-1));
|
|
56
56
|
}
|
|
57
57
|
.df-section__remove-button {
|
|
58
|
-
margin-left: var(--df-remove-button-margin-left,
|
|
58
|
+
margin-left: var(--df-remove-button-margin-left, var(--g-spacing-1));
|
|
59
59
|
}
|
|
@@ -16,6 +16,25 @@ const SectionBase = (_a) => {
|
|
|
16
16
|
const arrOrObjFlag = isArraySpec(spec) || isObjectSpec(spec);
|
|
17
17
|
const titleRef = React.useRef(null);
|
|
18
18
|
let content = children;
|
|
19
|
+
const { variantTitle: variantTitleProp } = spec.viewSpec.layoutProps || {};
|
|
20
|
+
const { sizeTitle, variantTitle } = React.useMemo(() => {
|
|
21
|
+
if (variantTitleProp) {
|
|
22
|
+
return {
|
|
23
|
+
sizeTitle: undefined,
|
|
24
|
+
variantTitle: variantTitleProp,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (titleSize === 'm') {
|
|
28
|
+
return {
|
|
29
|
+
sizeTitle: titleSize,
|
|
30
|
+
variantTitle: 'body-2',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
sizeTitle: titleSize,
|
|
35
|
+
variantTitle: 'body-1',
|
|
36
|
+
};
|
|
37
|
+
}, [variantTitleProp, titleSize]);
|
|
19
38
|
const removeButton = React.useMemo(() => {
|
|
20
39
|
if ((input === null || input === void 0 ? void 0 : input.value) && (input === null || input === void 0 ? void 0 : input.onDrop) && isArrayItem(name)) {
|
|
21
40
|
return (React.createElement(RemoveButton, { name: name, onDrop: input.onDrop, switcherClassName: b('remove-button') }));
|
|
@@ -47,10 +66,10 @@ const SectionBase = (_a) => {
|
|
|
47
66
|
return (React.createElement("section", { className: b() },
|
|
48
67
|
layoutTitle ? (React.createElement("div", { className: b('header', {
|
|
49
68
|
'with-popover': !descriptionAsSubtitle,
|
|
50
|
-
size:
|
|
69
|
+
size: sizeTitle,
|
|
51
70
|
}) },
|
|
52
71
|
React.createElement(Popover, { className: b('popover'), content: layoutTitle, placement: COMMON_POPOVER_PLACEMENT, disabled: layoutTitlePopoverDisabled },
|
|
53
|
-
React.createElement(Text, { className: b('title'), variant:
|
|
72
|
+
React.createElement(Text, { className: b('title'), variant: variantTitle, ref: titleRef, ellipsis: true }, layoutTitle)),
|
|
54
73
|
description,
|
|
55
74
|
removeButton)) : null,
|
|
56
75
|
React.createElement("div", { className: b('content') }, content)));
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
/* Border-radius */
|
|
20
20
|
.df-transparent {
|
|
21
21
|
display: flex;
|
|
22
|
-
margin-bottom: var(--df-spacing-inputs,
|
|
22
|
+
margin-bottom: var(--df-spacing-inputs, var(--g-spacing-4));
|
|
23
23
|
}
|
|
24
24
|
.df-transparent:last-child {
|
|
25
25
|
margin-bottom: var(--df-spacing-last-child, var(--g-spacing-0));
|
|
@@ -34,5 +34,5 @@
|
|
|
34
34
|
width: auto;
|
|
35
35
|
}
|
|
36
36
|
.df-transparent__remove-button {
|
|
37
|
-
margin-left: var(--df-remove-button-margin-left,
|
|
37
|
+
margin-left: var(--df-remove-button-margin-left, var(--g-spacing-1));
|
|
38
38
|
}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
}
|
|
26
26
|
.df-simple-vertical-accordeon_branch .df-simple-vertical-accordeon__body {
|
|
27
27
|
padding-left: var(--df-simple-vertical-accordeon-body-padding-left, var(--g-spacing-5));
|
|
28
|
-
margin-left: var(--df-simple-vertical-accordeon-body-margin-left,
|
|
28
|
+
margin-left: var(--df-simple-vertical-accordeon-body-margin-left, var(--g-spacing-1));
|
|
29
29
|
border-left: 1px solid var(--g-color-line-generic-accent);
|
|
30
30
|
}
|
|
31
31
|
.df-simple-vertical-accordeon__header {
|
|
@@ -33,14 +33,14 @@
|
|
|
33
33
|
align-items: center;
|
|
34
34
|
}
|
|
35
35
|
.df-simple-vertical-accordeon__header-inner {
|
|
36
|
-
margin-left: var(--df-simple-vertical-accordeon-header-inner-margin-left, -
|
|
36
|
+
margin-left: var(--df-simple-vertical-accordeon-header-inner-margin-left, calc(-1 * var(--g-spacing-3)));
|
|
37
37
|
max-width: var(--df-simple-vertical-accordeon-header-inner-max-width, 533px);
|
|
38
38
|
}
|
|
39
39
|
.df-simple-vertical-accordeon__header .g-popover__handler {
|
|
40
40
|
display: flex;
|
|
41
41
|
}
|
|
42
42
|
.df-simple-vertical-accordeon__tooltip {
|
|
43
|
-
margin: var(--df-simple-vertical-accordeon-tooltip-margin, var(--g-spacing-0)
|
|
43
|
+
margin: var(--df-simple-vertical-accordeon-tooltip-margin, var(--g-spacing-0) var(--g-spacing-1));
|
|
44
44
|
}
|
|
45
45
|
.df-simple-vertical-accordeon__popover {
|
|
46
46
|
padding: var(--g-spacing-2);
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
}
|
|
54
54
|
.df-simple-vertical-accordeon__body {
|
|
55
55
|
margin-top: var(--df-simple-vertical-accordeon-body-margin-top, var(--g-spacing-1));
|
|
56
|
-
padding-top: var(--df-simple-vertical-accordeon-body-padding-top,
|
|
56
|
+
padding-top: var(--df-simple-vertical-accordeon-body-padding-top, var(--g-spacing-1));
|
|
57
57
|
}
|
|
58
58
|
.df-simple-vertical-accordeon__body_hidden {
|
|
59
59
|
display: none;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { TextProps } from '@gravity-ui/uikit';
|
|
2
3
|
import './SimpleVerticalAccordeon.css';
|
|
3
4
|
interface SimpleVerticalAccordeonProps {
|
|
4
5
|
children: React.ReactNode;
|
|
@@ -16,6 +17,7 @@ interface SimpleVerticalAccordeonProps {
|
|
|
16
17
|
hideInsteadOfDestroy?: boolean;
|
|
17
18
|
withBranchView?: boolean;
|
|
18
19
|
viewLayout?: boolean;
|
|
20
|
+
variantTitle?: TextProps['variant'];
|
|
19
21
|
}
|
|
20
22
|
interface SimpleVerticalAccordeonState {
|
|
21
23
|
open: boolean;
|
|
@@ -48,7 +48,7 @@ export class SimpleVerticalAccordeon extends React.Component {
|
|
|
48
48
|
}
|
|
49
49
|
render() {
|
|
50
50
|
var _a;
|
|
51
|
-
const { children, headerActionsTemplate, className, contentClassName, buttonClassName, hideInsteadOfDestroy, withBranchView, viewLayout, name, } = this.props;
|
|
51
|
+
const { children, headerActionsTemplate, className, contentClassName, buttonClassName, hideInsteadOfDestroy, withBranchView, viewLayout, name, variantTitle, } = this.props;
|
|
52
52
|
const { open, hidden, isFirstRender } = this.state;
|
|
53
53
|
const content = hideInsteadOfDestroy ? (React.createElement("div", { ref: this.componentRef, className: b('body', { hidden: !open }) }, children)) : (open && (React.createElement("div", { ref: this.componentRef, className: b('body', contentClassName) }, children)));
|
|
54
54
|
if (viewLayout && !isFirstRender && hidden) {
|
|
@@ -56,7 +56,7 @@ export class SimpleVerticalAccordeon extends React.Component {
|
|
|
56
56
|
}
|
|
57
57
|
const title = this.getTitle();
|
|
58
58
|
const titlePopoverDisabled = (((_a = this.titleRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || 0) <= TITLE_TEXT_MAX_WIDTH;
|
|
59
|
-
const currentTitleVariant = this.getCurrentTitleVariant();
|
|
59
|
+
const currentTitleVariant = variantTitle || this.getCurrentTitleVariant();
|
|
60
60
|
return (Boolean(React.Children.count(children)) && (React.createElement("div", { className: b({ branch: withBranchView, view: viewLayout }, className) },
|
|
61
61
|
React.createElement("div", { className: b('header') },
|
|
62
62
|
React.createElement(Popover, { content: title, disabled: titlePopoverDisabled, placement: COMMON_POPOVER_PLACEMENT, className: b('popover'), hasArrow: true },
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
/* Border-radius */
|
|
20
20
|
.df-toggler-card {
|
|
21
21
|
width: var(--df-toggler-card-width, 254px);
|
|
22
|
-
padding: var(--df-toggler-card-padding,
|
|
22
|
+
padding: var(--df-toggler-card-padding, var(--g-spacing-2));
|
|
23
23
|
height: var(--df-toggler-card-height, 88px);
|
|
24
24
|
}
|
|
25
25
|
.df-toggler-card__header {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
align-items: baseline;
|
|
29
29
|
}
|
|
30
30
|
.df-toggler-card__text {
|
|
31
|
-
margin: var(--df-toggler-card-text-margin, var(--g-spacing-3)
|
|
31
|
+
margin: var(--df-toggler-card-text-margin, var(--g-spacing-3) var(--g-spacing-4) var(--g-spacing-0) var(--g-spacing-0));
|
|
32
32
|
display: block;
|
|
33
33
|
height: var(--df-toggler-card-text-height, 36px);
|
|
34
34
|
overflow: hidden;
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { TextProps } from '@gravity-ui/uikit';
|
|
2
|
+
import { ArrayValue, ObjectValue, Spec, ViewLayoutProps } from '../../../../core';
|
|
3
|
+
interface ViewAccordeonLayoutProps {
|
|
4
|
+
variantTitle?: TextProps['variant'];
|
|
5
|
+
}
|
|
6
|
+
export declare const ViewAccordeon: <T extends ViewLayoutProps<ArrayValue | ObjectValue, Spec<any, any, ViewAccordeonLayoutProps>>>({ name, value, spec, children, }: T) => JSX.Element | null;
|
|
7
|
+
export {};
|
|
@@ -6,10 +6,11 @@ import { SimpleVerticalAccordeon } from '../../SimpleVerticalAccordeon';
|
|
|
6
6
|
export const ViewAccordeon = ({ name, value, spec, children, }) => {
|
|
7
7
|
const { showLayoutDescription } = useDynamicFormsCtx();
|
|
8
8
|
const [open, setOpen] = React.useState(isBoolean(spec.viewSpec.layoutOpen) ? spec.viewSpec.layoutOpen : true);
|
|
9
|
+
const { variantTitle } = spec.viewSpec.layoutProps || {};
|
|
9
10
|
if (!isNotEmptyValue(value, spec)) {
|
|
10
11
|
return null;
|
|
11
12
|
}
|
|
12
13
|
return (React.createElement(SimpleVerticalAccordeon, { name: name, title: spec.viewSpec.layoutTitle || '', note: showLayoutDescription && spec.viewSpec.layoutDescription
|
|
13
14
|
? spec.viewSpec.layoutDescription
|
|
14
|
-
: undefined, open: open, onOpenChange: setOpen, hideInsteadOfDestroy: true, withBranchView: true, viewLayout: true }, children));
|
|
15
|
+
: undefined, open: open, onOpenChange: setOpen, hideInsteadOfDestroy: true, withBranchView: true, viewLayout: true, variantTitle: variantTitle }, children));
|
|
15
16
|
};
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
margin-inline-start: var(--df-view-column-note-margin-inline-start, var(--g-spacing-half));
|
|
51
51
|
}
|
|
52
52
|
.df-view-column__second-row > .df-view-transparent {
|
|
53
|
-
margin-bottom: var(--df-view-column-second-row-child-view-transperant-margin-bottom,
|
|
53
|
+
margin-bottom: var(--df-view-column-second-row-child-view-transperant-margin-bottom, var(--g-spacing-2));
|
|
54
54
|
}
|
|
55
55
|
.df-view-column__second-row > .df-view-transparent:last-child {
|
|
56
56
|
margin-bottom: var(--df-spacing-last-child, var(--g-spacing-0));
|