@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.
Files changed (81) hide show
  1. package/build/cjs/lib/core/components/Form/hooks/useSearch/useSearch.css +1 -1
  2. package/build/cjs/lib/kit/components/AccordeonCard/AccordeonCard.css +1 -1
  3. package/build/cjs/lib/kit/components/Card/Card.css +2 -2
  4. package/build/cjs/lib/kit/components/CopyButton/CopyButton.css +1 -1
  5. package/build/cjs/lib/kit/components/GroupIndent/GroupIndent.css +3 -3
  6. package/build/cjs/lib/kit/components/Inputs/ArrayBase/ArrayBase.css +2 -2
  7. package/build/cjs/lib/kit/components/Inputs/CardOneOf/CardOneOf.js +8 -2
  8. package/build/cjs/lib/kit/components/Inputs/CheckboxGroup/CheckboxGroup.css +3 -3
  9. package/build/cjs/lib/kit/components/Inputs/FileInput/FileInput.css +1 -1
  10. package/build/cjs/lib/kit/components/Inputs/MonacoInput/MonacoHeader.css +1 -1
  11. package/build/cjs/lib/kit/components/Inputs/MonacoInput/MonacoInputDialog.css +1 -1
  12. package/build/cjs/lib/kit/components/Inputs/MultiOneOf/MultiOneOf.css +1 -1
  13. package/build/cjs/lib/kit/components/Inputs/NumberWithScale/NumberWithScale.css +1 -1
  14. package/build/cjs/lib/kit/components/Inputs/OneOf/OneOf.css +4 -4
  15. package/build/cjs/lib/kit/components/Inputs/TableArrayInput/TableArrayInput.css +2 -2
  16. package/build/cjs/lib/kit/components/Inputs/TextContent/TextContent.js +1 -1
  17. package/build/cjs/lib/kit/components/Layouts/Accordeon/Accordeon.js +2 -1
  18. package/build/cjs/lib/kit/components/Layouts/Column/Column.css +4 -4
  19. package/build/cjs/lib/kit/components/Layouts/Row/Row.css +6 -6
  20. package/build/cjs/lib/kit/components/Layouts/Section/Section.css +2 -2
  21. package/build/cjs/lib/kit/components/Layouts/Section/Section.js +21 -2
  22. package/build/cjs/lib/kit/components/Layouts/Transparent/Transparent.css +2 -2
  23. package/build/cjs/lib/kit/components/SimpleVerticalAccordeon/SimpleVerticalAccordeon.css +4 -4
  24. package/build/cjs/lib/kit/components/SimpleVerticalAccordeon/SimpleVerticalAccordeon.js +2 -2
  25. package/build/cjs/lib/kit/components/TogglerCard/TogglerCard.css +2 -2
  26. package/build/cjs/lib/kit/components/ViewLayouts/ViewAccordeon/ViewAccordeon.js +2 -1
  27. package/build/cjs/lib/kit/components/ViewLayouts/ViewColumn/ViewColumn.css +1 -1
  28. package/build/cjs/lib/kit/components/ViewLayouts/ViewRow/ViewRow.css +1 -1
  29. package/build/cjs/lib/kit/components/ViewLayouts/ViewTableCell/ViewTableCell.css +1 -1
  30. package/build/cjs/lib/kit/components/Views/ArrayBaseView/ArrayBaseView.css +1 -1
  31. package/build/cjs/lib/kit/components/Views/CardOneOfView.js +13 -3
  32. package/build/cjs/lib/kit/components/Views/CheckboxGroupView/CheckboxGroupView.css +2 -2
  33. package/build/cjs/lib/kit/components/Views/MonacoInputView/MonacoViewDialog.css +1 -1
  34. package/build/cjs/lib/kit/components/Views/TableArrayView/TableArrayView.css +1 -1
  35. package/build/cjs/lib/kit/components/Views/TextAreaView/TextAreaView.css +1 -1
  36. package/build/cjs/lib/kit/hooks/useOneOf/useOneOf.css +1 -1
  37. package/build/cjs/lib/kit/utils/common.js +9 -8
  38. package/build/esm/lib/core/components/Form/hooks/useSearch/useSearch.css +1 -1
  39. package/build/esm/lib/core/components/View/types/layout.d.ts +1 -1
  40. package/build/esm/lib/core/components/View/types/views.d.ts +1 -1
  41. package/build/esm/lib/core/types/specs.d.ts +2 -1
  42. package/build/esm/lib/kit/components/AccordeonCard/AccordeonCard.css +1 -1
  43. package/build/esm/lib/kit/components/Card/Card.css +2 -2
  44. package/build/esm/lib/kit/components/CopyButton/CopyButton.css +1 -1
  45. package/build/esm/lib/kit/components/GroupIndent/GroupIndent.css +3 -3
  46. package/build/esm/lib/kit/components/Inputs/ArrayBase/ArrayBase.css +2 -2
  47. package/build/esm/lib/kit/components/Inputs/CardOneOf/CardOneOf.js +8 -2
  48. package/build/esm/lib/kit/components/Inputs/CheckboxGroup/CheckboxGroup.css +3 -3
  49. package/build/esm/lib/kit/components/Inputs/FileInput/FileInput.css +1 -1
  50. package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoHeader.css +1 -1
  51. package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoInputDialog.css +1 -1
  52. package/build/esm/lib/kit/components/Inputs/MultiOneOf/MultiOneOf.css +1 -1
  53. package/build/esm/lib/kit/components/Inputs/NumberWithScale/NumberWithScale.css +1 -1
  54. package/build/esm/lib/kit/components/Inputs/OneOf/OneOf.css +4 -4
  55. package/build/esm/lib/kit/components/Inputs/TableArrayInput/TableArrayInput.css +2 -2
  56. package/build/esm/lib/kit/components/Inputs/TextContent/TextContent.js +1 -1
  57. package/build/esm/lib/kit/components/Layouts/Accordeon/Accordeon.d.ts +6 -1
  58. package/build/esm/lib/kit/components/Layouts/Accordeon/Accordeon.js +2 -1
  59. package/build/esm/lib/kit/components/Layouts/Column/Column.css +4 -4
  60. package/build/esm/lib/kit/components/Layouts/Row/Row.css +6 -6
  61. package/build/esm/lib/kit/components/Layouts/Section/Section.css +2 -2
  62. package/build/esm/lib/kit/components/Layouts/Section/Section.js +21 -2
  63. package/build/esm/lib/kit/components/Layouts/Transparent/Transparent.css +2 -2
  64. package/build/esm/lib/kit/components/SimpleVerticalAccordeon/SimpleVerticalAccordeon.css +4 -4
  65. package/build/esm/lib/kit/components/SimpleVerticalAccordeon/SimpleVerticalAccordeon.d.ts +2 -0
  66. package/build/esm/lib/kit/components/SimpleVerticalAccordeon/SimpleVerticalAccordeon.js +2 -2
  67. package/build/esm/lib/kit/components/TogglerCard/TogglerCard.css +2 -2
  68. package/build/esm/lib/kit/components/ViewLayouts/ViewAccordeon/ViewAccordeon.d.ts +7 -2
  69. package/build/esm/lib/kit/components/ViewLayouts/ViewAccordeon/ViewAccordeon.js +2 -1
  70. package/build/esm/lib/kit/components/ViewLayouts/ViewColumn/ViewColumn.css +1 -1
  71. package/build/esm/lib/kit/components/ViewLayouts/ViewRow/ViewRow.css +1 -1
  72. package/build/esm/lib/kit/components/ViewLayouts/ViewTableCell/ViewTableCell.css +1 -1
  73. package/build/esm/lib/kit/components/Views/ArrayBaseView/ArrayBaseView.css +1 -1
  74. package/build/esm/lib/kit/components/Views/CardOneOfView.js +13 -3
  75. package/build/esm/lib/kit/components/Views/CheckboxGroupView/CheckboxGroupView.css +2 -2
  76. package/build/esm/lib/kit/components/Views/MonacoInputView/MonacoViewDialog.css +1 -1
  77. package/build/esm/lib/kit/components/Views/TableArrayView/TableArrayView.css +1 -1
  78. package/build/esm/lib/kit/components/Views/TextAreaView/TextAreaView.css +1 -1
  79. package/build/esm/lib/kit/hooks/useOneOf/useOneOf.css +1 -1
  80. package/build/esm/lib/kit/utils/common.js +9 -8
  81. 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 (_l) {
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.themeLabel)) {
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)((_h = (_g = result.viewSpec) === null || _g === void 0 ? void 0 : _g.textContentParams) === null || _h === void 0 ? void 0 : _h.themeLabel)) {
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)((_k = (_j = result.viewSpec) === null || _j === void 0 ? void 0 : _j.textContentParams) === null || _k === void 0 ? void 0 : _k.themeAlert)) {
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
  }
@@ -18,7 +18,7 @@
18
18
  */
19
19
  /* Border-radius */
20
20
  .df-use-search {
21
- margin-bottom: var(--df-spacing-inputs, 15px);
21
+ margin-bottom: var(--df-spacing-inputs, var(--g-spacing-4));
22
22
  }
23
23
  .df-use-search_hidden {
24
24
  display: none;
@@ -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, 5px);
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, 10px);
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, 5px);
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;
@@ -21,7 +21,7 @@
21
21
  width: 20px;
22
22
  display: none;
23
23
  position: relative;
24
- margin: -1px 0 0 5px;
24
+ margin: var(--df-copy-button-margin, var(--g-spacing-0) var(--g-spacing-0) var(--g-spacing-0) var(--g-spacing-1));
25
25
  }
26
26
  .df-copy-button__button {
27
27
  position: absolute;
@@ -18,8 +18,8 @@
18
18
  */
19
19
  /* Border-radius */
20
20
  .df-group-indent {
21
- padding: var(--df-group-indent-padding, 11px var(--g-spacing-0) var(--g-spacing-0) var(--g-spacing-5));
22
- margin: var(--df-group-indent-margin, -11px var(--g-spacing-0) var(--g-spacing-0) 5px);
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, -10px);
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, 15px);
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, -7px var(--g-spacing-0) var(--g-spacing-2));
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(() => (React.createElement(Row, Object.assign({}, props, { name: "__stub-name" }), togglerInput)), [togglerInput, props]);
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, 5px);
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, 6px);
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) 6px);
38
+ margin: var(--df-checkbox-group-vertical-child-margin, var(--g-spacing-0) var(--g-spacing-0) var(--g-spacing-2));
39
39
  }
@@ -25,6 +25,6 @@
25
25
  }
26
26
  .df-file-input__file-name {
27
27
  display: block;
28
- margin: var(--df-file-input-file-name-margin, auto 10px);
28
+ margin: var(--df-file-input-file-name-margin, auto var(--g-spacing-2));
29
29
  max-width: var(--df-file-input-file-name-max-width, 160px);
30
30
  }
@@ -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, 15px);
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, 6px var(--g-spacing-8) var(--g-spacing-8));
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, 15px);
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;
@@ -22,5 +22,5 @@
22
22
  }
23
23
  .df-number-with-scale__select {
24
24
  max-width: var(--df-number-with-scale-select-max-width, 102px);
25
- margin-left: var(--df-number-with-scale-select-margin-left, 5px);
25
+ margin-left: var(--df-number-with-scale-select-margin-left, var(--g-spacing-1));
26
26
  }
@@ -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, 11px 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) 5px);
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, -10px);
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, 15px);
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, 10px);
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, 3px);
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
- export declare const Accordeon: <T extends ArrayLayoutProps<undefined, undefined> | ObjectLayoutProps<undefined, undefined>>({ name, spec, input, meta, children, }: T) => JSX.Element;
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, 15px);
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, 3px);
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, 1px);
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, 5px);
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, 15px);
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, 3px);
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, 1px);
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, 15px);
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, 10px);
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, 5px);
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, 5px);
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, 5px);
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: titleSize,
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: titleSize === 'm' ? 'body-2' : 'body-1', ref: titleRef, ellipsis: true }, layoutTitle)),
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, 15px);
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, 5px);
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, 5px);
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, -13px);
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) 5px);
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, 6px);
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, 6px);
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) 15px var(--g-spacing-0) var(--g-spacing-0));
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 { ArrayViewLayoutProps, ObjectViewLayoutProps } from '../../../../core';
2
- export declare const ViewAccordeon: <T extends ArrayViewLayoutProps | ObjectViewLayoutProps>({ name, value, spec, children, }: T) => JSX.Element | null;
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, 6px);
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));