@gravity-ui/dynamic-forms 5.30.0 → 5.33.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 (124) hide show
  1. package/build/cjs/lib/unstable/core/constants.d.ts +1 -0
  2. package/build/cjs/lib/unstable/core/constants.js +1 -0
  3. package/build/cjs/lib/unstable/core/useSchemaRenderer/types/state.d.ts +1 -0
  4. package/build/cjs/lib/unstable/core/useSchemaRenderer/useSchemaRenderer.js +17 -0
  5. package/build/cjs/lib/unstable/kit/components/ArrayRemoveButton/ArrayRemoveButton.d.ts +2 -0
  6. package/build/cjs/lib/unstable/kit/components/ArrayRemoveButton/ArrayRemoveButton.js +6 -7
  7. package/build/cjs/lib/unstable/kit/components/CopyButton/CopyButton.css +1 -0
  8. package/build/cjs/lib/unstable/kit/components/CopyButton/CopyButton.d.ts +3 -1
  9. package/build/cjs/lib/unstable/kit/components/CopyButton/CopyButton.js +6 -2
  10. package/build/cjs/lib/unstable/kit/components/DropButton/DropButton.css +3 -0
  11. package/build/cjs/lib/unstable/kit/components/DropButton/DropButton.d.ts +10 -0
  12. package/build/cjs/lib/unstable/kit/components/DropButton/DropButton.js +32 -0
  13. package/build/cjs/lib/unstable/kit/components/DropButton/index.d.ts +1 -0
  14. package/build/cjs/lib/unstable/kit/components/DropButton/index.js +5 -0
  15. package/build/cjs/lib/unstable/kit/components/EntityContainer/EntityContainer.css +1 -0
  16. package/build/cjs/lib/unstable/kit/components/EntityContainer/EntityContainer.d.ts +1 -0
  17. package/build/cjs/lib/unstable/kit/components/EntityContainer/EntityContainer.js +2 -2
  18. package/build/cjs/lib/unstable/kit/components/LayoutButtons/LayoutButtons.d.ts +10 -0
  19. package/build/cjs/lib/unstable/kit/components/LayoutButtons/LayoutButtons.js +15 -0
  20. package/build/cjs/lib/unstable/kit/components/LayoutButtons/index.d.ts +1 -0
  21. package/build/cjs/lib/unstable/kit/components/LayoutButtons/index.js +5 -0
  22. package/build/cjs/lib/unstable/kit/components/LayoutContainer/LayoutContainer.css +30 -1
  23. package/build/cjs/lib/unstable/kit/components/index.d.ts +2 -0
  24. package/build/cjs/lib/unstable/kit/components/index.js +5 -1
  25. package/build/cjs/lib/unstable/kit/constants/config.d.ts +4 -2
  26. package/build/cjs/lib/unstable/kit/constants/config.js +4 -4
  27. package/build/cjs/lib/unstable/kit/entities/ArrayEntity/ArrayEntity.css +1 -1
  28. package/build/cjs/lib/unstable/kit/entities/ArrayEntity/ArrayEntity.js +33 -4
  29. package/build/cjs/lib/unstable/kit/entities/ArrayTable/ArrayTable.css +13 -3
  30. package/build/cjs/lib/unstable/kit/entities/ArrayTable/ArrayTable.js +47 -15
  31. package/build/cjs/lib/unstable/kit/entities/ObjectEntity/ObjectEntity.css +3 -0
  32. package/build/cjs/lib/unstable/kit/entities/ObjectEntity/ObjectEntity.js +40 -5
  33. package/build/cjs/lib/unstable/kit/entities/ObjectInline/ObjectInline.js +1 -1
  34. package/build/cjs/lib/unstable/kit/entities/OneOfNested/OneOfNested.js +1 -1
  35. package/build/cjs/lib/unstable/kit/form-entities/NumberWithScaleInput/NumberWithScaleInput.js +1 -1
  36. package/build/cjs/lib/unstable/kit/form-entities/RadioGroupInput/RadioGroupInput.css +3 -5
  37. package/build/cjs/lib/unstable/kit/form-entities/RadioGroupInput/RadioGroupInput.js +1 -1
  38. package/build/cjs/lib/unstable/kit/form-entities/RangeInput/RangeInput.js +2 -2
  39. package/build/cjs/lib/unstable/kit/form-entities/SegmentedRadioGroupInput/SegmentedRadioGroupInput.css +1 -0
  40. package/build/cjs/lib/unstable/kit/form-entities/StringNumberWithScaleInput/StringNumberWithScaleInput.js +1 -1
  41. package/build/cjs/lib/unstable/kit/form-entities/TextAreaInput/TextAreaInput.js +1 -1
  42. package/build/cjs/lib/unstable/kit/form-layouts/FormColumn/FormColumn.css +3 -3
  43. package/build/cjs/lib/unstable/kit/form-layouts/FormColumn/FormColumn.js +6 -5
  44. package/build/cjs/lib/unstable/kit/form-layouts/FormRow/FormRow.js +2 -2
  45. package/build/cjs/lib/unstable/kit/hooks/index.d.ts +1 -0
  46. package/build/cjs/lib/unstable/kit/hooks/index.js +5 -0
  47. package/build/cjs/lib/unstable/kit/hooks/useExpanded.d.ts +11 -0
  48. package/build/cjs/lib/unstable/kit/hooks/useExpanded.js +25 -0
  49. package/build/cjs/lib/unstable/kit/index.d.ts +1 -0
  50. package/build/cjs/lib/unstable/kit/index.js +1 -0
  51. package/build/cjs/lib/unstable/kit/layouts/Accordeon/Accordeon.css +2 -6
  52. package/build/cjs/lib/unstable/kit/layouts/Accordeon/Accordeon.js +6 -17
  53. package/build/cjs/lib/unstable/kit/layouts/Card/Card.css +0 -6
  54. package/build/cjs/lib/unstable/kit/layouts/Card/Card.js +12 -11
  55. package/build/cjs/lib/unstable/kit/layouts/Section/Section.css +0 -6
  56. package/build/cjs/lib/unstable/kit/layouts/Section/Section.js +2 -3
  57. package/build/cjs/lib/unstable/kit/layouts/Transparent/Transparent.css +0 -6
  58. package/build/cjs/lib/unstable/kit/layouts/Transparent/Transparent.js +2 -3
  59. package/build/cjs/lib/unstable/kit/overview-layouts/OverviewColumn/OverviewColumn.js +3 -3
  60. package/build/cjs/lib/unstable/kit/overview-layouts/OverviewRow/OverviewRow.js +3 -3
  61. package/build/cjs/lib/unstable/kit/utils/transformer.js +18 -3
  62. package/build/esm/lib/unstable/core/constants.d.ts +1 -0
  63. package/build/esm/lib/unstable/core/constants.js +1 -0
  64. package/build/esm/lib/unstable/core/useSchemaRenderer/types/state.d.ts +1 -0
  65. package/build/esm/lib/unstable/core/useSchemaRenderer/useSchemaRenderer.js +17 -0
  66. package/build/esm/lib/unstable/kit/components/ArrayRemoveButton/ArrayRemoveButton.d.ts +2 -0
  67. package/build/esm/lib/unstable/kit/components/ArrayRemoveButton/ArrayRemoveButton.js +7 -8
  68. package/build/esm/lib/unstable/kit/components/CopyButton/CopyButton.css +1 -0
  69. package/build/esm/lib/unstable/kit/components/CopyButton/CopyButton.d.ts +3 -1
  70. package/build/esm/lib/unstable/kit/components/CopyButton/CopyButton.js +6 -2
  71. package/build/esm/lib/unstable/kit/components/DropButton/DropButton.css +3 -0
  72. package/build/esm/lib/unstable/kit/components/DropButton/DropButton.d.ts +11 -0
  73. package/build/esm/lib/unstable/kit/components/DropButton/DropButton.js +28 -0
  74. package/build/esm/lib/unstable/kit/components/DropButton/index.d.ts +1 -0
  75. package/build/esm/lib/unstable/kit/components/DropButton/index.js +1 -0
  76. package/build/esm/lib/unstable/kit/components/EntityContainer/EntityContainer.css +1 -0
  77. package/build/esm/lib/unstable/kit/components/EntityContainer/EntityContainer.d.ts +1 -0
  78. package/build/esm/lib/unstable/kit/components/EntityContainer/EntityContainer.js +2 -2
  79. package/build/esm/lib/unstable/kit/components/LayoutButtons/LayoutButtons.d.ts +10 -0
  80. package/build/esm/lib/unstable/kit/components/LayoutButtons/LayoutButtons.js +10 -0
  81. package/build/esm/lib/unstable/kit/components/LayoutButtons/index.d.ts +1 -0
  82. package/build/esm/lib/unstable/kit/components/LayoutButtons/index.js +1 -0
  83. package/build/esm/lib/unstable/kit/components/LayoutContainer/LayoutContainer.css +30 -1
  84. package/build/esm/lib/unstable/kit/components/index.d.ts +2 -0
  85. package/build/esm/lib/unstable/kit/components/index.js +2 -0
  86. package/build/esm/lib/unstable/kit/constants/config.d.ts +4 -2
  87. package/build/esm/lib/unstable/kit/constants/config.js +4 -4
  88. package/build/esm/lib/unstable/kit/entities/ArrayEntity/ArrayEntity.css +1 -1
  89. package/build/esm/lib/unstable/kit/entities/ArrayEntity/ArrayEntity.js +33 -4
  90. package/build/esm/lib/unstable/kit/entities/ArrayTable/ArrayTable.css +13 -3
  91. package/build/esm/lib/unstable/kit/entities/ArrayTable/ArrayTable.js +48 -16
  92. package/build/esm/lib/unstable/kit/entities/ObjectEntity/ObjectEntity.css +3 -0
  93. package/build/esm/lib/unstable/kit/entities/ObjectEntity/ObjectEntity.d.ts +1 -0
  94. package/build/esm/lib/unstable/kit/entities/ObjectEntity/ObjectEntity.js +42 -6
  95. package/build/esm/lib/unstable/kit/entities/ObjectInline/ObjectInline.js +1 -1
  96. package/build/esm/lib/unstable/kit/entities/OneOfNested/OneOfNested.js +1 -1
  97. package/build/esm/lib/unstable/kit/form-entities/NumberWithScaleInput/NumberWithScaleInput.js +1 -1
  98. package/build/esm/lib/unstable/kit/form-entities/RadioGroupInput/RadioGroupInput.css +3 -5
  99. package/build/esm/lib/unstable/kit/form-entities/RadioGroupInput/RadioGroupInput.js +1 -1
  100. package/build/esm/lib/unstable/kit/form-entities/RangeInput/RangeInput.js +2 -2
  101. package/build/esm/lib/unstable/kit/form-entities/SegmentedRadioGroupInput/SegmentedRadioGroupInput.css +1 -0
  102. package/build/esm/lib/unstable/kit/form-entities/StringNumberWithScaleInput/StringNumberWithScaleInput.js +1 -1
  103. package/build/esm/lib/unstable/kit/form-entities/TextAreaInput/TextAreaInput.js +1 -1
  104. package/build/esm/lib/unstable/kit/form-layouts/FormColumn/FormColumn.css +3 -3
  105. package/build/esm/lib/unstable/kit/form-layouts/FormColumn/FormColumn.js +7 -6
  106. package/build/esm/lib/unstable/kit/form-layouts/FormRow/FormRow.js +3 -3
  107. package/build/esm/lib/unstable/kit/hooks/index.d.ts +1 -0
  108. package/build/esm/lib/unstable/kit/hooks/index.js +1 -0
  109. package/build/esm/lib/unstable/kit/hooks/useExpanded.d.ts +11 -0
  110. package/build/esm/lib/unstable/kit/hooks/useExpanded.js +20 -0
  111. package/build/esm/lib/unstable/kit/index.d.ts +1 -0
  112. package/build/esm/lib/unstable/kit/index.js +1 -0
  113. package/build/esm/lib/unstable/kit/layouts/Accordeon/Accordeon.css +2 -6
  114. package/build/esm/lib/unstable/kit/layouts/Accordeon/Accordeon.js +7 -18
  115. package/build/esm/lib/unstable/kit/layouts/Card/Card.css +0 -6
  116. package/build/esm/lib/unstable/kit/layouts/Card/Card.js +13 -12
  117. package/build/esm/lib/unstable/kit/layouts/Section/Section.css +0 -6
  118. package/build/esm/lib/unstable/kit/layouts/Section/Section.js +3 -4
  119. package/build/esm/lib/unstable/kit/layouts/Transparent/Transparent.css +0 -6
  120. package/build/esm/lib/unstable/kit/layouts/Transparent/Transparent.js +3 -4
  121. package/build/esm/lib/unstable/kit/overview-layouts/OverviewColumn/OverviewColumn.js +4 -4
  122. package/build/esm/lib/unstable/kit/overview-layouts/OverviewRow/OverviewRow.js +4 -4
  123. package/build/esm/lib/unstable/kit/utils/transformer.js +18 -3
  124. package/package.json +1 -1
@@ -3,14 +3,49 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ObjectEntity = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
+ const icons_1 = require("@gravity-ui/icons");
7
+ const uikit_1 = require("@gravity-ui/uikit");
6
8
  const core_1 = require("../../../core");
7
9
  const components_1 = require("../../components");
8
- const ObjectEntity = ({ headName, mode, input, props, schema, schemaPath, }) => {
9
- const { name } = input;
10
+ const utils_1 = require("../../utils");
11
+ const b = (0, utils_1.block)('object-entity');
12
+ const ObjectEntity = ({ Layout, headName, input, layoutProps, meta, mode, props, schema, schemaPath, }) => {
13
+ var _a;
14
+ const { onFocus, onChange, onBlur, value } = input;
15
+ const { disabled, required } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
10
16
  const overviewFlag = mode === core_1.SchemaRendererMode.Overview;
11
- if (overviewFlag && !Object.keys(schema.properties || {}).length) {
12
- return react_1.default.createElement(components_1.EmptyEntityValue, null);
17
+ const { name } = input;
18
+ const initButton = react_1.default.useMemo(() => {
19
+ if (required || value !== undefined || overviewFlag) {
20
+ return null;
21
+ }
22
+ const onClick = () => {
23
+ onFocus();
24
+ onChange({});
25
+ onBlur();
26
+ };
27
+ return (react_1.default.createElement(uikit_1.Button, { className: b('init-button'), onClick: onClick, disabled: disabled || schema.readOnly, qa: `${name}-init-button` },
28
+ react_1.default.createElement(uikit_1.Icon, { data: icons_1.Plus, size: 14 }),
29
+ schema.title || null));
30
+ }, [
31
+ disabled,
32
+ name,
33
+ onBlur,
34
+ onChange,
35
+ onFocus,
36
+ overviewFlag,
37
+ required,
38
+ schema.title,
39
+ schema.readOnly,
40
+ value,
41
+ ]);
42
+ if (!Object.keys(schema.properties || {}).length) {
43
+ return null;
44
+ }
45
+ let content = (react_1.default.createElement(components_1.EntityContainer, { stretch: "by-child", fill: "by-child", droppable: true }, initButton ? (initButton) : (react_1.default.createElement(react_1.default.Fragment, null, (props.order || Object.keys(schema.properties || {})).map((property) => (react_1.default.createElement(core_1.SchemaRendererNode, { headName: headName, name: `${name ? name + '.' : ''}${property}`, schemaPath: `${schemaPath}/properties/${property}`, key: property })))))));
46
+ if (Layout) {
47
+ content = (react_1.default.createElement(Layout, { headName: headName, input: input, meta: meta, mode: mode, schema: schema, schemaPath: schemaPath, props: layoutProps || {} }, content));
13
48
  }
14
- return (react_1.default.createElement(components_1.EntityContainer, { stretch: "by-child", fill: "by-child" }, (props.order || Object.keys(schema.properties || {})).map((property) => (react_1.default.createElement(core_1.SchemaRendererNode, { headName: headName, name: `${name ? name + '.' : ''}${property}`, schemaPath: `${schemaPath}/properties/${property}`, key: property })))));
49
+ return content;
15
50
  };
16
51
  exports.ObjectEntity = ObjectEntity;
@@ -19,7 +19,7 @@ const ObjectInline = ({ headName, input, mode, props, schema, schemaPath, }) =>
19
19
  }
20
20
  return (react_1.default.createElement(components_1.EntityContainer, { stretch: overviewFlag ? 'by-child' : 'max', className: b(), fill: "by-child" },
21
21
  react_1.default.createElement(uikit_1.Flex, { className: b('items', { overview: overviewFlag }), direction: "row", alignItems: "flex-start", gap: overviewFlag ? 1 : 2 }, (order || Object.keys(schema.properties || {})).map((property, index, array) => (react_1.default.createElement(react_1.default.Fragment, { key: property },
22
- react_1.default.createElement(core_1.SchemaRendererNode, { headName: headName, name: `${name ? name + '.' : ''}${property}`, schemaPath: `${schemaPath}/properties/${property}` }),
22
+ react_1.default.createElement(core_1.SchemaRendererNode, { headName: headName, name: `${name ? name + '.' : ''}${property}`, schemaPath: `${schemaPath}/properties/${property}`, key: property }),
23
23
  (0, isString_1.default)(delimiter) && index + 1 !== array.length ? (react_1.default.createElement(uikit_1.Text, { className: b('delimiter') }, delimiter)) : null,
24
24
  (0, isObject_1.default)(delimiter) && delimiter[property] ? (react_1.default.createElement(uikit_1.Text, { className: b('delimiter') }, delimiter[property])) : null))))));
25
25
  };
@@ -72,7 +72,7 @@ const OneOfNested = ({ Layout, headName, input, layoutProps, meta, mode, props,
72
72
  }, [name, input, togglerArrayRemoveButton]);
73
73
  let content = (react_1.default.createElement(components_1.EntityContainer, { direction: "column-reverse", stretch: "by-child", fill: "populated" },
74
74
  togglerValue === undefined ? null : (react_1.default.createElement(components_1.LayoutContainer, { className: b('content', { 'with-indent': withIndent }), hideEmpty: overviewFlag },
75
- react_1.default.createElement(core_1.SchemaRendererNode, { headName: headName, name: `${name ? name + '.' : ''}${togglerValue}`, schemaPath: `${schemaPath}/properties/${togglerValue}` }))),
75
+ react_1.default.createElement(core_1.SchemaRendererNode, { headName: headName, name: `${name ? name + '.' : ''}${togglerValue}`, schemaPath: `${schemaPath}/properties/${togglerValue}`, key: togglerValue }))),
76
76
  toggler));
77
77
  if (overviewFlag && Object.values(value || {}).length === 0) {
78
78
  content = react_1.default.createElement(react_1.default.Fragment, null, toggler);
@@ -30,7 +30,7 @@ const NumberWithScaleInput = ({ input, meta, props, schema, }) => {
30
30
  scale: preparedScale,
31
31
  defaultType,
32
32
  viewType: viewType && preparedScale[viewType] ? [viewType] : [defaultType],
33
- minScaleLength: `${minScaleLength + 42}px`,
33
+ minScaleLength: `${minScaleLength + 60}px`,
34
34
  };
35
35
  }
36
36
  }
@@ -1,9 +1,7 @@
1
- .sr-radio-group-input_direction_horizontal {
1
+ .sr-radio-group-input .g-radio-group .g-control-label.g-radio-group__option {
2
2
  min-height: 28px;
3
- padding-top: 1px;
4
- }
5
- .sr-radio-group-input_direction_vertical {
6
- padding-top: 7px;
3
+ align-items: center;
4
+ margin-bottom: 0;
7
5
  }
8
6
  .sr-radio-group-input_error .g-radio-group .g-radio_checked .g-radio__indicator:hover::before {
9
7
  border: 1px solid var(--g-color-text-danger);
@@ -20,7 +20,7 @@ const RadioGroupInput = ({ input, meta, props, schema, }) => {
20
20
  disabled: optionsDisabled === null || optionsDisabled === void 0 ? void 0 : optionsDisabled[value],
21
21
  }));
22
22
  }, [enumDescriptions, optionsDisabled, schema.enum]);
23
- return (react_1.default.createElement(components_1.EntityContainer, { stretch: "fit", className: b({ error: (0, utils_1.getBooleanValidationState)(meta), direction }), justifyContent: "center" },
23
+ return (react_1.default.createElement(components_1.EntityContainer, { stretch: "fit", className: b({ error: (0, utils_1.getBooleanValidationState)(meta) }), justifyContent: "center" },
24
24
  react_1.default.createElement(uikit_1.RadioGroup, Object.assign({ options: options, disabled: disabled || schema.readOnly }, restEntityProps, { value: value, onFocus: onFocus, onBlur: onBlur, onUpdate: onChange, direction: direction, qa: name }))));
25
25
  };
26
26
  exports.RadioGroupInput = RadioGroupInput;
@@ -64,8 +64,8 @@ const RangeInput = ({ headName, input, props, schemaPath, }) => {
64
64
  }, [inputValue === null || inputValue === void 0 ? void 0 : inputValue[fromKey], inputValue === null || inputValue === void 0 ? void 0 : inputValue[toKey]]);
65
65
  return (react_1.default.createElement(components_1.EntityContainer, { stretch: "max", className: b() },
66
66
  react_1.default.createElement(uikit_1.Flex, { className: b('items'), direction: "row", alignItems: "flex-start", gap: 2 },
67
- react_1.default.createElement(core_1.SchemaRendererNode, { headName: headName, name: fromName, schemaPath: `${schemaPath}/properties/${fromKey}` }),
67
+ react_1.default.createElement(core_1.SchemaRendererNode, { headName: headName, name: fromName, schemaPath: `${schemaPath}/properties/${fromKey}`, key: fromKey }),
68
68
  react_1.default.createElement(uikit_1.Text, { className: b('delimiter') }, separator),
69
- react_1.default.createElement(core_1.SchemaRendererNode, { headName: headName, name: toName, schemaPath: `${schemaPath}/properties/${toKey}` }))));
69
+ react_1.default.createElement(core_1.SchemaRendererNode, { headName: headName, name: toName, schemaPath: `${schemaPath}/properties/${toKey}`, key: toKey }))));
70
70
  };
71
71
  exports.RangeInput = RangeInput;
@@ -1,5 +1,6 @@
1
1
  .sr-segmented-radio-group-input {
2
2
  position: relative;
3
+ overflow: hidden;
3
4
  }
4
5
  .sr-segmented-radio-group-input_error .g-segmented-radio-group .g-segmented-radio-group__option_checked:hover::after {
5
6
  border: 1px solid var(--g-color-text-danger);
@@ -31,7 +31,7 @@ const StringNumberWithScaleInput = ({ input, meta, props, schema }) => {
31
31
  scale: preparedScale,
32
32
  defaultType,
33
33
  viewType: viewType && preparedScale[viewType] ? [viewType] : [defaultType],
34
- minScaleLength: `${minScaleLength + 42}px`,
34
+ minScaleLength: `${minScaleLength + 60}px`,
35
35
  };
36
36
  }
37
37
  }
@@ -11,6 +11,6 @@ const TextAreaInput = ({ input, meta, props, schema, }) => {
11
11
  var _a, _b, _c;
12
12
  const { disabled } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
13
13
  return (react_1.default.createElement(components_1.EntityContainer, { stretch: "max", className: b({ error: (0, utils_1.getBooleanValidationState)(meta) }) },
14
- react_1.default.createElement(uikit_1.TextArea, Object.assign({ maxRows: 20, minRows: 0, placeholder: (_b = schema.examples) === null || _b === void 0 ? void 0 : _b[0], disabled: disabled || schema.readOnly, hasClear: true }, props, { value: (_c = input.value) !== null && _c !== void 0 ? _c : '', onFocus: input.onFocus, onBlur: input.onBlur, onUpdate: input.onChange, errorMessage: undefined, validationState: (0, utils_1.getValidationState)(meta), qa: input.name }))));
14
+ react_1.default.createElement(uikit_1.TextArea, Object.assign({ maxRows: 20, minRows: 8, placeholder: (_b = schema.examples) === null || _b === void 0 ? void 0 : _b[0], disabled: disabled || schema.readOnly, hasClear: true }, props, { value: (_c = input.value) !== null && _c !== void 0 ? _c : '', onFocus: input.onFocus, onBlur: input.onBlur, onUpdate: input.onChange, errorMessage: undefined, validationState: (0, utils_1.getValidationState)(meta), qa: input.name }))));
15
15
  };
16
16
  exports.TextAreaInput = TextAreaInput;
@@ -4,14 +4,14 @@
4
4
  .sr-form-column:last-child {
5
5
  margin-bottom: 0;
6
6
  }
7
- .sr-form-column__top {
7
+ .sr-form-column__title {
8
8
  display: inline;
9
9
  }
10
- .sr-form-column__title {
10
+ .sr-form-column__title-text {
11
11
  min-height: 18px;
12
12
  margin-right: calc(var(--g-spacing-base) * 1);
13
13
  }
14
- .sr-form-column__title_required::after {
14
+ .sr-form-column__title-text_required::after {
15
15
  content: "*";
16
16
  margin-left: calc(var(--g-spacing-base) * 1);
17
17
  color: var(--g-color-text-danger);
@@ -7,7 +7,7 @@ const uikit_1 = require("@gravity-ui/uikit");
7
7
  const components_1 = require("../../components");
8
8
  const utils_1 = require("../../utils");
9
9
  const b = (0, utils_1.block)('form-column');
10
- const FormColumn = ({ children, headName, input, meta, schema, props, }) => {
10
+ const FormColumn = ({ children, headName, input, meta, mode, schema, props, }) => {
11
11
  var _a;
12
12
  const { hidden, required } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
13
13
  const tooltip = react_1.default.useMemo(() => {
@@ -25,10 +25,11 @@ const FormColumn = ({ children, headName, input, meta, schema, props, }) => {
25
25
  }, [headName, schema.description, props.descriptionType]);
26
26
  return (react_1.default.createElement(components_1.LayoutContainer, { className: b(), gap: 2, hidden: hidden },
27
27
  react_1.default.createElement(uikit_1.Flex, { direction: "column", gap: 0.5 },
28
- react_1.default.createElement("div", { className: b('top') },
29
- react_1.default.createElement(uikit_1.Text, { className: b('title', { required }), variant: "subheader-1", color: "complementary", wordBreak: "break-word" }, schema.title),
30
- tooltip,
31
- react_1.default.createElement(components_1.ArrayRemoveButton, { name: input.name, headName: headName })),
28
+ react_1.default.createElement(uikit_1.Flex, { alignItems: "center", gap: 2 },
29
+ react_1.default.createElement("div", { className: b('title') },
30
+ react_1.default.createElement(uikit_1.Text, { className: b('title-text', { required }), variant: "subheader-1", color: "complementary", wordBreak: "break-word" }, schema.title),
31
+ tooltip),
32
+ react_1.default.createElement(components_1.LayoutButtons, { mode: mode, name: input.name, headName: headName, schema: schema, value: input.value })),
32
33
  bottomDescription),
33
34
  react_1.default.createElement(uikit_1.Flex, { className: b('bottom'), direction: "column", gap: 0.5 },
34
35
  children,
@@ -7,7 +7,7 @@ const uikit_1 = require("@gravity-ui/uikit");
7
7
  const components_1 = require("../../components");
8
8
  const utils_1 = require("../../utils");
9
9
  const b = (0, utils_1.block)('form-row');
10
- const FormRow = ({ children, headName, input, meta, schema, props, }) => {
10
+ const FormRow = ({ children, headName, input, meta, mode, schema, props, }) => {
11
11
  var _a;
12
12
  const { hidden, required } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
13
13
  const tooltip = react_1.default.useMemo(() => {
@@ -30,7 +30,7 @@ const FormRow = ({ children, headName, input, meta, schema, props, }) => {
30
30
  react_1.default.createElement(uikit_1.Flex, { className: b('right'), direction: "column", gap: 0.5, grow: 1 },
31
31
  react_1.default.createElement(uikit_1.Flex, { grow: 1, gap: 2 },
32
32
  children,
33
- react_1.default.createElement(components_1.ArrayRemoveButton, { name: input.name, headName: headName })),
33
+ react_1.default.createElement(components_1.LayoutButtons, { mode: mode, name: input.name, headName: headName, schema: schema, value: input.value })),
34
34
  bottomDescription,
35
35
  react_1.default.createElement(components_1.EntityError, { errorMessage: meta.error, validationState: (0, utils_1.getValidationState)(meta) }))));
36
36
  };
@@ -0,0 +1 @@
1
+ export { type UseExpandedParams, useExpanded } from './useExpanded';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useExpanded = void 0;
4
+ var useExpanded_1 = require("./useExpanded");
5
+ Object.defineProperty(exports, "useExpanded", { enumerable: true, get: function () { return useExpanded_1.useExpanded; } });
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface UseExpandedParams {
3
+ headName: string;
4
+ name: string;
5
+ open?: boolean;
6
+ }
7
+ export declare const useExpanded: ({ headName, name, open }: UseExpandedParams) => {
8
+ expanded: boolean;
9
+ setExpanded: React.Dispatch<React.SetStateAction<boolean>>;
10
+ toggleExpanded: () => void;
11
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useExpanded = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const core_1 = require("../../core");
7
+ const useExpanded = ({ headName, name, open = true }) => {
8
+ const srState = (0, core_1.useSchemaRendererState)({
9
+ headName,
10
+ subscriptions: [core_1.SchemaRendererEventType.Submit],
11
+ });
12
+ const [expanded, setExpanded] = react_1.default.useState(open);
13
+ const toggleExpanded = react_1.default.useCallback(() => {
14
+ setExpanded((f) => !f);
15
+ }, []);
16
+ react_1.default.useEffect(() => {
17
+ if (srState &&
18
+ srState.submitCount > 0 &&
19
+ Object.keys(srState.errors).some((key) => key.startsWith(name))) {
20
+ setExpanded(true);
21
+ }
22
+ }, [srState]);
23
+ return { expanded, setExpanded, toggleExpanded };
24
+ };
25
+ exports.useExpanded = useExpanded;
@@ -1,6 +1,7 @@
1
1
  export * from './components';
2
2
  export * from './constants';
3
3
  export * from './entities';
4
+ export * from './hooks';
4
5
  export * from './form-entities';
5
6
  export * from './form-layouts';
6
7
  export * from './layouts';
@@ -4,6 +4,7 @@ const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./components"), exports);
5
5
  tslib_1.__exportStar(require("./constants"), exports);
6
6
  tslib_1.__exportStar(require("./entities"), exports);
7
+ tslib_1.__exportStar(require("./hooks"), exports);
7
8
  tslib_1.__exportStar(require("./form-entities"), exports);
8
9
  tslib_1.__exportStar(require("./form-layouts"), exports);
9
10
  tslib_1.__exportStar(require("./layouts"), exports);
@@ -4,9 +4,6 @@
4
4
  .sr-accordeon:last-child {
5
5
  margin-bottom: 0;
6
6
  }
7
- .sr-accordeon:hover .sr-accordeon__copy-button {
8
- display: block;
9
- }
10
7
  .sr-accordeon .g-disclosure__trigger {
11
8
  padding-left: 6.5px;
12
9
  }
@@ -17,6 +14,8 @@
17
14
  display: none;
18
15
  }
19
16
  .sr-accordeon__toggler {
17
+ height: auto;
18
+ min-height: 28px;
20
19
  padding-left: 6px;
21
20
  }
22
21
  .sr-accordeon__title_required::after {
@@ -40,7 +39,4 @@
40
39
  position: absolute;
41
40
  left: calc(var(--g-spacing-base) * 3 + 1.5px);
42
41
  bottom: 0;
43
- }
44
- .sr-accordeon__copy-button {
45
- display: none;
46
42
  }
@@ -7,14 +7,16 @@ const icons_1 = require("@gravity-ui/icons");
7
7
  const uikit_1 = require("@gravity-ui/uikit");
8
8
  const core_1 = require("../../../core");
9
9
  const components_1 = require("../../components");
10
+ const hooks_1 = require("../../hooks");
10
11
  const utils_1 = require("../../utils");
11
12
  const b = (0, utils_1.block)('accordeon');
12
13
  const Accordeon = ({ children, headName, input, meta, mode, schema, props, }) => {
13
14
  var _a;
14
15
  const { titleProps, togglerProps, withIndent = false, withDefaultSummary = false } = props, restLayoutProps = tslib_1.__rest(props, ["titleProps", "togglerProps", "withIndent", "withDefaultSummary"]);
15
- const { copy, required, hidden, open } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
16
+ const { required, hidden, open } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
17
+ const { expanded, setExpanded } = (0, hooks_1.useExpanded)({ headName, name: input.name, open });
16
18
  const overviewFlag = mode === core_1.SchemaRendererMode.Overview;
17
- const summary = react_1.default.useMemo(() => (react_1.default.createElement(uikit_1.Text, Object.assign({ variant: "subheader-1", color: "complementary" }, titleProps, { className: b('title', { required: required && !overviewFlag }, titleProps === null || titleProps === void 0 ? void 0 : titleProps.className) }), schema.title)), [overviewFlag, required, schema.title, titleProps]);
19
+ const summary = react_1.default.useMemo(() => (react_1.default.createElement(uikit_1.Text, Object.assign({ variant: "subheader-1", color: "complementary" }, titleProps, { className: b('title', { required: required && !overviewFlag }, titleProps === null || titleProps === void 0 ? void 0 : titleProps.className), whiteSpace: "break-spaces", wordBreak: "break-word" }), schema.title)), [overviewFlag, required, schema.title, titleProps]);
18
20
  const helpMark = react_1.default.useMemo(() => {
19
21
  if (schema.description) {
20
22
  return (react_1.default.createElement(uikit_1.HelpMark, null,
@@ -22,28 +24,15 @@ const Accordeon = ({ children, headName, input, meta, mode, schema, props, }) =>
22
24
  }
23
25
  return null;
24
26
  }, [schema.description, headName]);
25
- const copyButton = react_1.default.useMemo(() => {
26
- if (overviewFlag) {
27
- return react_1.default.createElement(components_1.CopyButton, { className: b('copy-button'), copy: copy, value: input.value });
28
- }
29
- return null;
30
- }, [overviewFlag, copy, input.value]);
31
- const removeButton = react_1.default.useMemo(() => {
32
- if (overviewFlag) {
33
- return null;
34
- }
35
- return react_1.default.createElement(components_1.ArrayRemoveButton, { name: input.name, headName: headName });
36
- }, [overviewFlag, input.name, headName]);
37
27
  return (react_1.default.createElement(components_1.LayoutContainer, { className: b({ 'without-default-summary': !withDefaultSummary }), hideEmpty: overviewFlag, hidden: hidden },
38
- react_1.default.createElement(uikit_1.Disclosure, Object.assign({ defaultExpanded: open, summary: summary }, restLayoutProps),
28
+ react_1.default.createElement(uikit_1.Disclosure, Object.assign({ summary: summary, expanded: expanded, onUpdate: setExpanded }, restLayoutProps),
39
29
  react_1.default.createElement(uikit_1.Disclosure.Summary, null, ({ expanded, onClick }, defaultSummary) => (react_1.default.createElement(uikit_1.Flex, { minHeight: "28px", alignItems: "center", gap: 2 },
40
30
  withDefaultSummary ? (defaultSummary) : (react_1.default.createElement(uikit_1.Button, Object.assign({}, togglerProps, { onClick: onClick, className: b('toggler', togglerProps === null || togglerProps === void 0 ? void 0 : togglerProps.className) }),
41
31
  react_1.default.createElement(uikit_1.Flex, { alignItems: "center", gap: 2, height: "100%" },
42
32
  react_1.default.createElement(uikit_1.Icon, { data: expanded ? icons_1.ChevronUp : icons_1.ChevronDown }),
43
33
  summary))),
44
34
  helpMark,
45
- copyButton,
46
- removeButton))),
35
+ react_1.default.createElement(components_1.LayoutButtons, { mode: mode, name: input.name, headName: headName, schema: schema, value: input.value })))),
47
36
  react_1.default.createElement(uikit_1.Flex, { direction: "column", gap: 0.5, grow: 1 },
48
37
  react_1.default.createElement("div", { className: b('content', { 'with-indent': withIndent }) }, children),
49
38
  overviewFlag ? null : (react_1.default.createElement(components_1.EntityError, { errorMessage: meta.error, validationState: (0, utils_1.getValidationState)(meta) }))))));
@@ -4,9 +4,6 @@
4
4
  .sr-card:last-child {
5
5
  margin-bottom: 0;
6
6
  }
7
- .sr-card:hover .sr-card__copy-button {
8
- display: block;
9
- }
10
7
  .sr-card__inner {
11
8
  display: flex;
12
9
  flex-direction: column;
@@ -35,7 +32,4 @@
35
32
  content: "*";
36
33
  margin-left: calc(var(--g-spacing-base) * 1);
37
34
  color: var(--g-color-text-danger);
38
- }
39
- .sr-card__copy-button {
40
- display: none;
41
35
  }
@@ -7,17 +7,19 @@ const icons_1 = require("@gravity-ui/icons");
7
7
  const uikit_1 = require("@gravity-ui/uikit");
8
8
  const core_1 = require("../../../core");
9
9
  const components_1 = require("../../components");
10
+ const hooks_1 = require("../../hooks");
10
11
  const utils_1 = require("../../utils");
11
12
  const b = (0, utils_1.block)('card');
12
13
  const Card = ({ children, headName, input, meta, mode, schema, props, }) => {
13
14
  var _a;
14
15
  const { descriptionType = 'tooltip', likeAccordeon = true } = props, restLayoutProps = tslib_1.__rest(props, ["descriptionType", "likeAccordeon"]);
15
- const { copy, required, hidden, open = true } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
16
+ const { required, hidden, open = true } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
16
17
  const overviewFlag = mode === core_1.SchemaRendererMode.Overview;
17
- const [visible, setVisible] = react_1.default.useState(likeAccordeon ? open : true);
18
- const toggleVisible = react_1.default.useCallback(() => {
19
- setVisible((f) => !f);
20
- }, []);
18
+ const { expanded, toggleExpanded } = (0, hooks_1.useExpanded)({
19
+ headName,
20
+ name: input.name,
21
+ open: likeAccordeon ? open : true,
22
+ });
21
23
  const tooltip = react_1.default.useMemo(() => {
22
24
  if (!schema.description || descriptionType === 'bottom') {
23
25
  return null;
@@ -33,20 +35,19 @@ const Card = ({ children, headName, input, meta, mode, schema, props, }) => {
33
35
  }, [headName, schema.description, descriptionType, overviewFlag]);
34
36
  return (react_1.default.createElement(components_1.LayoutContainer, { className: b(), hideEmpty: overviewFlag, hidden: hidden },
35
37
  react_1.default.createElement(uikit_1.Card, Object.assign({}, restLayoutProps, { className: b('card') }),
36
- react_1.default.createElement("div", { className: b('inner', { hidden: !visible }) },
38
+ react_1.default.createElement("div", { className: b('inner', { hidden: !expanded }) },
37
39
  react_1.default.createElement(uikit_1.Flex, { className: b('header'), direction: "column", justifyContent: "center" },
38
40
  react_1.default.createElement(uikit_1.Flex, { justifyContent: "space-between", alignItems: "center" },
39
41
  react_1.default.createElement(uikit_1.Flex, { alignItems: "center", gap: 2 },
40
42
  react_1.default.createElement(uikit_1.Text, { variant: "subheader-1", color: "complementary", className: b('title', { required: required && !overviewFlag }) }, schema.title),
41
43
  tooltip),
42
44
  react_1.default.createElement(uikit_1.Flex, { className: b('header-actions'), alignItems: "center", gap: 2 },
43
- overviewFlag ? (react_1.default.createElement(components_1.CopyButton, { className: b('copy-button'), copy: copy, value: input.value })) : null,
44
- overviewFlag ? null : (react_1.default.createElement(components_1.ArrayRemoveButton, { name: input.name, headName: headName })),
45
+ react_1.default.createElement(components_1.LayoutButtons, { mode: mode, name: input.name, headName: headName, schema: schema, value: input.value }),
45
46
  likeAccordeon ? (react_1.default.createElement(uikit_1.Flex, { width: "28px", justifyContent: "center" },
46
- react_1.default.createElement(uikit_1.Button, { onClick: toggleVisible, size: "s", view: "flat-secondary" },
47
- react_1.default.createElement(uikit_1.Icon, { data: visible ? icons_1.ChevronUp : icons_1.ChevronDown, size: 16 })))) : null)),
47
+ react_1.default.createElement(uikit_1.Button, { onClick: toggleExpanded, size: "s", view: "flat-secondary" },
48
+ react_1.default.createElement(uikit_1.Icon, { data: expanded ? icons_1.ChevronUp : icons_1.ChevronDown, size: 16 })))) : null)),
48
49
  bottomDescription),
49
- react_1.default.createElement("div", { className: b('content', { hidden: !visible }) }, children)),
50
+ react_1.default.createElement("div", { className: b('content', { hidden: !expanded }) }, children)),
50
51
  overviewFlag ? null : (react_1.default.createElement(components_1.EntityError, { errorMessage: meta.error, validationState: (0, utils_1.getValidationState)(meta) })))));
51
52
  };
52
53
  exports.Card = Card;
@@ -4,9 +4,6 @@
4
4
  .sr-section:last-child {
5
5
  margin-bottom: 0;
6
6
  }
7
- .sr-section:hover .sr-section__copy-button {
8
- display: block;
9
- }
10
7
  .sr-section__header {
11
8
  min-height: 28px;
12
9
  }
@@ -28,7 +25,4 @@
28
25
  position: absolute;
29
26
  left: calc(var(--g-spacing-base) * 3 + 1.5px);
30
27
  bottom: 0;
31
- }
32
- .sr-section__copy-button {
33
- display: none;
34
28
  }
@@ -11,7 +11,7 @@ const b = (0, utils_1.block)('section');
11
11
  const Section = ({ children, headName, input, meta, mode, schema, props, }) => {
12
12
  var _a;
13
13
  const { descriptionType = 'tooltip', withIndent = false } = props, restLayoutProps = tslib_1.__rest(props, ["descriptionType", "withIndent"]);
14
- const { copy, required, hidden } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
14
+ const { required, hidden } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
15
15
  const overviewFlag = mode === core_1.SchemaRendererMode.Overview;
16
16
  const tooltip = react_1.default.useMemo(() => {
17
17
  if (!schema.description || descriptionType === 'bottom') {
@@ -32,8 +32,7 @@ const Section = ({ children, headName, input, meta, mode, schema, props, }) => {
32
32
  react_1.default.createElement(uikit_1.Flex, { className: b('header'), gap: 2, alignItems: "center" },
33
33
  react_1.default.createElement(uikit_1.Text, Object.assign({ variant: "subheader-1", color: "complementary" }, restLayoutProps, { className: b('title', { required: required && !overviewFlag }, restLayoutProps === null || restLayoutProps === void 0 ? void 0 : restLayoutProps.className) }), schema.title),
34
34
  tooltip,
35
- overviewFlag ? (react_1.default.createElement(components_1.CopyButton, { className: b('copy-button'), copy: copy, value: input.value })) : null,
36
- overviewFlag ? null : (react_1.default.createElement(components_1.ArrayRemoveButton, { name: input.name, headName: headName }))),
35
+ react_1.default.createElement(components_1.LayoutButtons, { mode: mode, name: input.name, headName: headName, schema: schema, value: input.value })),
37
36
  bottomDescription),
38
37
  react_1.default.createElement("div", { className: b('content', { 'with-indent': withIndent }) }, children)),
39
38
  overviewFlag ? null : (react_1.default.createElement(components_1.EntityError, { errorMessage: meta.error, validationState: (0, utils_1.getValidationState)(meta) }))));
@@ -3,10 +3,4 @@
3
3
  }
4
4
  .sr-transparent:last-child {
5
5
  margin-bottom: 0;
6
- }
7
- .sr-transparent:hover .sr-transparent__copy-button {
8
- display: block;
9
- }
10
- .sr-transparent__copy-button {
11
- display: none;
12
6
  }
@@ -11,13 +11,12 @@ const utils_1 = require("../../utils");
11
11
  const b = (0, utils_1.block)('transparent');
12
12
  const Transparent = ({ children, headName, input, meta, mode, props, schema, }) => {
13
13
  var _a;
14
- const { copy, hidden } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
14
+ const { hidden } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
15
15
  const overviewFlag = mode === core_1.SchemaRendererMode.Overview;
16
16
  return (react_1.default.createElement(components_1.LayoutContainer, { className: b(), gap: 0.5, hideEmpty: (0, isBoolean_1.default)(props.hideEmpty) ? props.hideEmpty : overviewFlag, hidden: hidden },
17
17
  react_1.default.createElement(uikit_1.Flex, { gap: 2 },
18
18
  children,
19
- overviewFlag ? null : react_1.default.createElement(components_1.ArrayRemoveButton, { name: input.name, headName: headName }),
20
- overviewFlag ? (react_1.default.createElement(components_1.CopyButton, { className: b('copy-button'), copy: copy, value: input.value })) : null),
19
+ react_1.default.createElement(components_1.LayoutButtons, { mode: mode, name: input.name, headName: headName, schema: schema, value: input.value })),
21
20
  overviewFlag ? null : (react_1.default.createElement(components_1.EntityError, { errorMessage: meta.error, validationState: (0, utils_1.getValidationState)(meta) }))));
22
21
  };
23
22
  exports.Transparent = Transparent;
@@ -7,9 +7,9 @@ const uikit_1 = require("@gravity-ui/uikit");
7
7
  const components_1 = require("../../components");
8
8
  const utils_1 = require("../../utils");
9
9
  const b = (0, utils_1.block)('overview-column');
10
- const OverviewColumn = ({ children, headName, input, schema }) => {
10
+ const OverviewColumn = ({ children, headName, input, mode, schema, }) => {
11
11
  var _a;
12
- const { copy, hidden } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
12
+ const { hidden } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
13
13
  const tooltip = react_1.default.useMemo(() => {
14
14
  if (!schema.description) {
15
15
  return null;
@@ -25,6 +25,6 @@ const OverviewColumn = ({ children, headName, input, schema }) => {
25
25
  react_1.default.createElement(uikit_1.Flex, { className: b('bottom'), direction: "column", gap: 0.5, grow: 1 },
26
26
  react_1.default.createElement(uikit_1.Flex, { grow: 1, gap: 2 },
27
27
  children,
28
- react_1.default.createElement(components_1.CopyButton, { className: b('copy-button'), copy: copy, value: input.value })))));
28
+ react_1.default.createElement(components_1.LayoutButtons, { mode: mode, name: input.name, headName: headName, schema: schema, value: input.value })))));
29
29
  };
30
30
  exports.OverviewColumn = OverviewColumn;
@@ -7,9 +7,9 @@ const uikit_1 = require("@gravity-ui/uikit");
7
7
  const components_1 = require("../../components");
8
8
  const utils_1 = require("../../utils");
9
9
  const b = (0, utils_1.block)('overview-row');
10
- const OverviewRow = ({ children, headName, input, schema }) => {
10
+ const OverviewRow = ({ children, headName, input, mode, schema }) => {
11
11
  var _a;
12
- const { copy, hidden } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
12
+ const { hidden } = ((_a = schema.nodeParameters) === null || _a === void 0 ? void 0 : _a.flags) || {};
13
13
  const tooltip = react_1.default.useMemo(() => {
14
14
  if (!schema.description) {
15
15
  return null;
@@ -25,6 +25,6 @@ const OverviewRow = ({ children, headName, input, schema }) => {
25
25
  react_1.default.createElement(uikit_1.Flex, { className: b('right'), direction: "column", gap: 0.5, grow: 1 },
26
26
  react_1.default.createElement(uikit_1.Flex, { grow: 1, gap: 2 },
27
27
  children,
28
- react_1.default.createElement(components_1.CopyButton, { className: b('copy-button'), copy: copy, value: input.value })))));
28
+ react_1.default.createElement(components_1.LayoutButtons, { mode: mode, name: input.name, headName: headName, schema: schema, value: input.value })))));
29
29
  };
30
30
  exports.OverviewRow = OverviewRow;
@@ -16,9 +16,9 @@ const viewSpecRules = {
16
16
  },
17
17
  layout: (spec, mutableSchema) => {
18
18
  var _a;
19
- const layout = (_a = spec === null || spec === void 0 ? void 0 : spec.viewSpec) === null || _a === void 0 ? void 0 : _a.layout;
19
+ let layout = (_a = spec === null || spec === void 0 ? void 0 : spec.viewSpec) === null || _a === void 0 ? void 0 : _a.layout;
20
20
  if (!layout) {
21
- return;
21
+ layout = 'transparent';
22
22
  }
23
23
  if (layout === 'row_verbose') {
24
24
  (0, set_1.default)(mutableSchema, 'nodeParameters.layout', 'row');
@@ -335,6 +335,9 @@ const viewSpecRules = {
335
335
  if (spec.viewSpec.placeholder) {
336
336
  (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.entityProps.placeholder', spec.viewSpec.placeholder);
337
337
  }
338
+ if (spec.required) {
339
+ (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.flags.required', true);
340
+ }
338
341
  if (spec.description && Object.keys(spec.description).length) {
339
342
  (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.entityProps.enumDescriptions', spec.description);
340
343
  }
@@ -380,6 +383,9 @@ const viewSpecRules = {
380
383
  if (spec.viewSpec.placeholder) {
381
384
  (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.entityProps.placeholder', spec.viewSpec.placeholder);
382
385
  }
386
+ if (spec.required) {
387
+ (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.flags.required', true);
388
+ }
383
389
  if (spec.description && Object.keys(spec.description).length) {
384
390
  (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.entityProps.enumDescriptions', spec.description);
385
391
  }
@@ -425,6 +431,9 @@ const viewSpecRules = {
425
431
  if (spec.viewSpec.placeholder) {
426
432
  (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.entityProps.placeholder', spec.viewSpec.placeholder);
427
433
  }
434
+ if (spec.required) {
435
+ (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.flags.required', true);
436
+ }
428
437
  if (spec.description && Object.keys(spec.description).length) {
429
438
  (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.entityProps.enumDescriptions', spec.description);
430
439
  }
@@ -471,6 +480,9 @@ const viewSpecRules = {
471
480
  if (spec.viewSpec.placeholder) {
472
481
  (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.entityProps.placeholder', spec.viewSpec.placeholder);
473
482
  }
483
+ if (spec.required) {
484
+ (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.flags.required', true);
485
+ }
474
486
  if (spec.description && Object.keys(spec.description).length) {
475
487
  (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.entityProps.enumDescriptions', spec.description);
476
488
  }
@@ -506,6 +518,9 @@ const viewSpecRules = {
506
518
  if (spec.viewSpec.placeholder) {
507
519
  (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.entityProps.placeholder', spec.viewSpec.placeholder);
508
520
  }
521
+ if (spec.required) {
522
+ (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.flags.required', true);
523
+ }
509
524
  if (spec.description && Object.keys(spec.description).length) {
510
525
  (0, set_1.default)(mutableSchema, 'nodeParameters.entityProps.toggler.nodeParameters.entityProps.enumDescriptions', spec.description);
511
526
  }
@@ -542,7 +557,7 @@ const viewSpecRules = {
542
557
  (0, set_1.default)(mutableSchema, 'nodeParameters.type', core_2.NodeType.Any);
543
558
  }
544
559
  else if (((_j = spec === null || spec === void 0 ? void 0 : spec.viewSpec) === null || _j === void 0 ? void 0 : _j.type) === 'file_input') {
545
- (0, set_1.default)(mutableSchema, 'nodeParameters.entity', 'file');
560
+ (0, set_1.default)(mutableSchema, 'nodeParameters.entity', 'file_input');
546
561
  }
547
562
  else if (((_k = spec === null || spec === void 0 ? void 0 : spec.viewSpec) === null || _k === void 0 ? void 0 : _k.type) === 'monaco_input') {
548
563
  (0, set_1.default)(mutableSchema, 'nodeParameters.entity', 'monaco_input');