@gravity-ui/dynamic-forms 5.5.0 → 5.7.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 (25) hide show
  1. package/build/cjs/lib/kit/components/Inputs/MonacoInput/MonacoHeader.css +5 -0
  2. package/build/cjs/lib/kit/components/Inputs/MonacoInput/MonacoHeader.js +5 -4
  3. package/build/cjs/lib/kit/components/Inputs/MonacoInput/MonacoInputBase.css +8 -0
  4. package/build/cjs/lib/kit/components/Inputs/MonacoInput/MonacoInputBase.js +8 -7
  5. package/build/cjs/lib/kit/components/Inputs/MonacoInput/MonacoInputDialog.css +11 -0
  6. package/build/cjs/lib/kit/components/Inputs/MonacoInput/MonacoInputDialog.js +4 -3
  7. package/build/cjs/lib/kit/components/Views/MonacoInputView/MonacoBaseView.css +11 -1
  8. package/build/cjs/lib/kit/components/Views/MonacoInputView/MonacoBaseView.js +11 -6
  9. package/build/cjs/lib/kit/components/Views/MonacoInputView/MonacoViewDialog.css +11 -0
  10. package/build/cjs/lib/kit/components/Views/MonacoInputView/MonacoViewDialog.js +4 -3
  11. package/build/esm/lib/core/types/specs.d.ts +6 -1
  12. package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoHeader.css +5 -0
  13. package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoHeader.d.ts +6 -2
  14. package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoHeader.js +5 -4
  15. package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoInputBase.css +8 -0
  16. package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoInputBase.js +8 -7
  17. package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoInputDialog.css +11 -0
  18. package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoInputDialog.d.ts +5 -1
  19. package/build/esm/lib/kit/components/Inputs/MonacoInput/MonacoInputDialog.js +4 -3
  20. package/build/esm/lib/kit/components/Views/MonacoInputView/MonacoBaseView.css +11 -1
  21. package/build/esm/lib/kit/components/Views/MonacoInputView/MonacoBaseView.js +11 -6
  22. package/build/esm/lib/kit/components/Views/MonacoInputView/MonacoViewDialog.css +11 -0
  23. package/build/esm/lib/kit/components/Views/MonacoInputView/MonacoViewDialog.d.ts +5 -1
  24. package/build/esm/lib/kit/components/Views/MonacoInputView/MonacoViewDialog.js +4 -3
  25. package/package.json +1 -1
@@ -24,4 +24,9 @@
24
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
+ box-sizing: border-box;
28
+ }
29
+ .df-monaco-header__title {
30
+ display: flex;
31
+ align-items: center;
27
32
  }
@@ -7,8 +7,9 @@ const icons_1 = require("@gravity-ui/icons");
7
7
  const uikit_1 = require("@gravity-ui/uikit");
8
8
  const utils_1 = require("../../../utils");
9
9
  const b = (0, utils_1.block)('monaco-header');
10
- const MonacoHeader = ({ language, editButton }) => (react_1.default.createElement("div", { className: b() },
11
- react_1.default.createElement("div", null,
12
- react_1.default.createElement(uikit_1.Icon, { data: icons_1.File, size: 18 }),
13
- react_1.default.createElement(uikit_1.Text, { variant: "body-3" }, language)), editButton !== null && editButton !== void 0 ? editButton : null));
10
+ const MonacoHeader = ({ language, dialogButton, headerIconSize, headerIconIndent, headerTitleVariant, }) => (react_1.default.createElement("div", { className: b() },
11
+ react_1.default.createElement("div", { className: b('title') },
12
+ react_1.default.createElement("div", { style: { marginRight: `${headerIconIndent}px` } },
13
+ react_1.default.createElement(uikit_1.Icon, { data: icons_1.File, size: headerIconSize })),
14
+ react_1.default.createElement(uikit_1.Text, { variant: headerTitleVariant }, language)), dialogButton !== null && dialogButton !== void 0 ? dialogButton : null));
14
15
  exports.MonacoHeader = MonacoHeader;
@@ -19,7 +19,15 @@
19
19
  /* Border-radius */
20
20
  .df-monaco-input {
21
21
  width: var(--df-monaco-input-width, 550px);
22
+ height: var(--df-monaco-input-height, 354px);
22
23
  }
23
24
  .df-monaco-input__container {
25
+ height: calc(100% - 2px);
26
+ display: flex;
27
+ flex-direction: column;
24
28
  border: 1px solid var(--g-color-line-generic);
29
+ box-sizing: content-box;
30
+ }
31
+ .df-monaco-input__editor {
32
+ flex: 1;
25
33
  }
@@ -15,17 +15,17 @@ const MonacoInputBase = ({ name, input, spec, MonacoComponent, withoutDialog, })
15
15
  const { value, onChange } = input;
16
16
  const MonacoEditor = (0, hooks_1.useMonaco)() || MonacoComponent;
17
17
  const { monacoParams, disabled, layoutTitle } = spec.viewSpec;
18
- const { language, fontSize } = monacoParams !== null && monacoParams !== void 0 ? monacoParams : { language: 'plaintext', fontSize: 11 };
18
+ const { language = 'plaintext', fontSize = 11, headerIconSize = 18, headerIconIndent = 5, headerTitleVariant = 'body-2', headerDialogButtonSize = 'm', headerDialogIconSize = 16, } = monacoParams || {};
19
19
  const [monacoEditorDialog, setMonacoEditorDialog] = react_1.default.useState(false);
20
20
  const [monacoValue, setMonacoValue] = react_1.default.useState(value);
21
21
  const handleMonacoEditorDialogClose = react_1.default.useCallback(() => setMonacoEditorDialog(false), []);
22
22
  const dialogButton = react_1.default.useMemo(() => {
23
23
  if (!withoutDialog) {
24
- return (react_1.default.createElement(uikit_1.Button, { onClick: () => setMonacoEditorDialog(true), qa: `${name}-open-dialog` },
25
- react_1.default.createElement(uikit_1.Icon, { data: icons_1.ChevronsExpandUpRight, size: 16 })));
24
+ return (react_1.default.createElement(uikit_1.Button, { size: headerDialogButtonSize, onClick: () => setMonacoEditorDialog(true), qa: `${name}-open-dialog` },
25
+ react_1.default.createElement(uikit_1.Icon, { data: icons_1.ChevronsExpandUpRight, size: headerDialogIconSize })));
26
26
  }
27
27
  return;
28
- }, [withoutDialog, setMonacoEditorDialog, name]);
28
+ }, [withoutDialog, setMonacoEditorDialog, name, headerDialogButtonSize, headerDialogIconSize]);
29
29
  react_1.default.useEffect(() => onChange(monacoValue), [monacoValue]);
30
30
  const options = (0, useMonacoOptions_1.useMonacoOptions)(fontSize, disabled !== null && disabled !== void 0 ? disabled : false);
31
31
  if (!MonacoEditor) {
@@ -33,9 +33,10 @@ const MonacoInputBase = ({ name, input, spec, MonacoComponent, withoutDialog, })
33
33
  }
34
34
  return (react_1.default.createElement("div", { className: b() },
35
35
  react_1.default.createElement("div", { className: b('container'), "data-qa": name },
36
- react_1.default.createElement(MonacoHeader_1.MonacoHeader, { language: language, editButton: dialogButton }),
37
- react_1.default.createElement(MonacoEditor, { language: language, value: monacoValue, height: "300", onChange: setMonacoValue, options: options })),
38
- react_1.default.createElement(MonacoInputDialog_1.MonacoInputDialog, { name: name, title: layoutTitle, fontSize: fontSize, value: monacoValue, visible: monacoEditorDialog, language: language, changeMonacoValue: setMonacoValue, onChange: onChange, onClose: handleMonacoEditorDialogClose, MonacoComponent: MonacoComponent })));
36
+ react_1.default.createElement(MonacoHeader_1.MonacoHeader, { language: language, dialogButton: dialogButton, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant }),
37
+ react_1.default.createElement("div", { className: b('editor') },
38
+ react_1.default.createElement(MonacoEditor, { language: language, value: monacoValue, onChange: setMonacoValue, options: options }))),
39
+ react_1.default.createElement(MonacoInputDialog_1.MonacoInputDialog, { name: name, title: layoutTitle, fontSize: fontSize, value: monacoValue, visible: monacoEditorDialog, language: language, changeMonacoValue: setMonacoValue, onChange: onChange, onClose: handleMonacoEditorDialogClose, MonacoComponent: MonacoComponent, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant })));
39
40
  };
40
41
  exports.MonacoInputBase = MonacoInputBase;
41
42
  const MonacoInput = (props) => (react_1.default.createElement(exports.MonacoInputBase, Object.assign({}, props)));
@@ -17,11 +17,22 @@
17
17
  }
18
18
  */
19
19
  /* Border-radius */
20
+ .df-monaco-input-dialog {
21
+ width: var(--df-monaco-input-dialog-width, 966px);
22
+ height: var(--df-monaco-input-dialog-height, 804px);
23
+ }
20
24
  .df-monaco-input-dialog .g-dialog-footer {
21
25
  padding: var(--df-monaco-input-dialog-dialog-footer-padding, var(--g-spacing-2) var(--g-spacing-8) var(--g-spacing-8));
22
26
  }
23
27
  .df-monaco-input-dialog__container {
28
+ height: calc(100% - 2px);
29
+ display: flex;
30
+ flex-direction: column;
24
31
  border: 1px solid var(--g-color-line-generic);
32
+ box-sizing: content-box;
33
+ }
34
+ .df-monaco-input-dialog__editor {
35
+ flex: 1;
25
36
  }
26
37
  .df-monaco-input-dialog__dialog-header .g-dialog-header__caption {
27
38
  min-height: var(--df-monaco-dialog-header-caption-min-height, 24px);
@@ -10,7 +10,7 @@ const utils_1 = require("../../../utils");
10
10
  const MonacoHeader_1 = require("./MonacoHeader");
11
11
  const useMonacoOptions_1 = require("./useMonacoOptions");
12
12
  const b = (0, utils_1.block)('monaco-input-dialog');
13
- const MonacoInputDialog = ({ name, value, title, visible, language, onChange, onClose, changeMonacoValue, fontSize, MonacoComponent, }) => {
13
+ const MonacoInputDialog = ({ name, value, title, visible, language, onChange, onClose, changeMonacoValue, fontSize, MonacoComponent, headerIconSize, headerIconIndent, headerTitleVariant, }) => {
14
14
  const MonacoEditor = (0, hooks_1.useMonaco)() || MonacoComponent;
15
15
  const handleClose = react_1.default.useCallback(() => {
16
16
  onChange(value);
@@ -24,8 +24,9 @@ const MonacoInputDialog = ({ name, value, title, visible, language, onChange, on
24
24
  react_1.default.createElement(uikit_1.Dialog.Header, { caption: title, className: b('dialog-header') }),
25
25
  react_1.default.createElement(uikit_1.Dialog.Body, null,
26
26
  react_1.default.createElement("div", { className: b('container'), "data-qa": `${name}-dialog` },
27
- react_1.default.createElement(MonacoHeader_1.MonacoHeader, { language: language }),
28
- react_1.default.createElement(MonacoEditor, { language: language, height: "600", width: "900", value: value, onChange: changeMonacoValue, options: options }))),
27
+ react_1.default.createElement(MonacoHeader_1.MonacoHeader, { language: language, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant }),
28
+ react_1.default.createElement("div", { className: b('editor') },
29
+ react_1.default.createElement(MonacoEditor, { language: language, value: value, onChange: changeMonacoValue, options: options })))),
29
30
  react_1.default.createElement(uikit_1.Dialog.Footer, { textButtonApply: (0, i18n_1.default)('button_cancel'), onClickButtonApply: handleClose })));
30
31
  };
31
32
  exports.MonacoInputDialog = MonacoInputDialog;
@@ -18,6 +18,16 @@
18
18
  */
19
19
  /* Border-radius */
20
20
  .df-monaco-base-view {
21
- border: 1px solid var(--g-color-line-generic);
22
21
  width: var(--df-monaco-base-view-width, 550px);
22
+ height: var(--df-monaco-base-view-height, 354px);
23
+ }
24
+ .df-monaco-base-view__container {
25
+ height: calc(100% - 2px);
26
+ display: flex;
27
+ flex-direction: column;
28
+ border: 1px solid var(--g-color-line-generic);
29
+ box-sizing: content-box;
30
+ }
31
+ .df-monaco-base-view__editor {
32
+ flex: 1;
23
33
  }
@@ -11,21 +11,26 @@ const MonacoHeader_1 = require("../../Inputs/MonacoInput/MonacoHeader");
11
11
  const useMonacoOptions_1 = require("../../Inputs/MonacoInput/useMonacoOptions");
12
12
  const MonacoViewDialog_1 = require("./MonacoViewDialog");
13
13
  const b = (0, utils_1.block)('monaco-base-view');
14
- const MonacoBaseView = ({ value, spec }) => {
14
+ const MonacoBaseView = ({ value, spec, name }) => {
15
15
  const { monacoParams, layoutTitle } = spec.viewSpec;
16
16
  const MonacoEditor = (0, hooks_1.useMonaco)();
17
- const { language, fontSize } = monacoParams !== null && monacoParams !== void 0 ? monacoParams : { language: 'plaintext', fontSize: 12 };
17
+ const { language = 'plaintext', fontSize = 11, headerIconSize = 18, headerIconIndent = 5, headerTitleVariant = 'body-2', headerDialogButtonSize = 'm', headerDialogIconSize = 16, } = monacoParams || {};
18
18
  const options = (0, useMonacoOptions_1.useMonacoOptions)(fontSize, true);
19
19
  const [monacoEditorDialog, setMonacoEditorDialog] = react_1.default.useState(false);
20
20
  const handleMonacoEditorDialogClose = react_1.default.useCallback(() => setMonacoEditorDialog(false), []);
21
+ const dialogButton = react_1.default.useMemo(() => {
22
+ return (react_1.default.createElement(uikit_1.Button, { size: headerDialogButtonSize, onClick: () => setMonacoEditorDialog(true), qa: `${name}-open-dialog` },
23
+ react_1.default.createElement(uikit_1.Icon, { data: icons_1.ChevronsExpandUpRight, size: headerDialogIconSize })));
24
+ }, [setMonacoEditorDialog, name, headerDialogButtonSize, headerDialogIconSize]);
21
25
  if (!value || !MonacoEditor) {
22
26
  return null;
23
27
  }
24
28
  return (react_1.default.createElement("div", { className: b() },
25
- react_1.default.createElement(MonacoHeader_1.MonacoHeader, { language: language, editButton: react_1.default.createElement(uikit_1.Button, { onClick: () => setMonacoEditorDialog(true) },
26
- react_1.default.createElement(uikit_1.Icon, { data: icons_1.ChevronsExpandUpRight, size: 16 })) }),
27
- react_1.default.createElement(MonacoEditor, { language: language, value: value, height: '250', options: options }),
28
- react_1.default.createElement(MonacoViewDialog_1.MonacoViewDialog, { title: layoutTitle, fontSize: fontSize, value: value, visible: monacoEditorDialog, language: language, onClose: handleMonacoEditorDialogClose })));
29
+ react_1.default.createElement("div", { className: b('container'), "data-qa": name },
30
+ react_1.default.createElement(MonacoHeader_1.MonacoHeader, { language: language, dialogButton: dialogButton, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant }),
31
+ react_1.default.createElement("div", { className: b('editor') },
32
+ react_1.default.createElement(MonacoEditor, { language: language, value: value, options: options }))),
33
+ react_1.default.createElement(MonacoViewDialog_1.MonacoViewDialog, { title: layoutTitle, fontSize: fontSize, value: value, visible: monacoEditorDialog, language: language, onClose: handleMonacoEditorDialogClose, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant })));
29
34
  };
30
35
  const MonacoView = (props) => react_1.default.createElement(MonacoBaseView, Object.assign({}, props));
31
36
  exports.MonacoView = MonacoView;
@@ -17,11 +17,22 @@
17
17
  }
18
18
  */
19
19
  /* Border-radius */
20
+ .df-monaco-view-dialog {
21
+ width: var(--df-monaco-view-dialog-width, 966px);
22
+ height: var(--df-monaco-view-dialog-height, 804px);
23
+ }
20
24
  .df-monaco-view-dialog .g-dialog-footer {
21
25
  padding: var(--df-monaco-view-dialog-footer-padding, var(--g-spacing-4));
22
26
  }
23
27
  .df-monaco-view-dialog__container {
28
+ height: calc(100% - 2px);
29
+ display: flex;
30
+ flex-direction: column;
24
31
  border: 1px solid var(--g-color-line-generic);
32
+ box-sizing: content-box;
33
+ }
34
+ .df-monaco-view-dialog__editor {
35
+ flex: 1;
25
36
  }
26
37
  .df-monaco-view-dialog__dialog-header {
27
38
  height: var(--df-monaco-view-dialog-header-height, 48px);
@@ -10,7 +10,7 @@ const utils_1 = require("../../../utils");
10
10
  const MonacoHeader_1 = require("../../Inputs/MonacoInput/MonacoHeader");
11
11
  const useMonacoOptions_1 = require("../../Inputs/MonacoInput/useMonacoOptions");
12
12
  const b = (0, utils_1.block)('monaco-view-dialog');
13
- const MonacoViewDialog = ({ value, title, visible, language, onClose, fontSize, }) => {
13
+ const MonacoViewDialog = ({ value, title, visible, language, onClose, fontSize, headerIconSize, headerIconIndent, headerTitleVariant, }) => {
14
14
  const MonacoEditor = (0, hooks_1.useMonaco)();
15
15
  const handleClose = react_1.default.useCallback(() => {
16
16
  onClose();
@@ -23,8 +23,9 @@ const MonacoViewDialog = ({ value, title, visible, language, onClose, fontSize,
23
23
  react_1.default.createElement(uikit_1.Dialog.Header, { caption: title, className: b('dialog-header') }),
24
24
  react_1.default.createElement(uikit_1.Dialog.Body, null,
25
25
  react_1.default.createElement("div", { className: b('container') },
26
- react_1.default.createElement(MonacoHeader_1.MonacoHeader, { language: language }),
27
- react_1.default.createElement(MonacoEditor, { language: language, height: "600", width: "900", value: value, options: options }))),
26
+ react_1.default.createElement(MonacoHeader_1.MonacoHeader, { language: language, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant }),
27
+ react_1.default.createElement("div", { className: b('editor') },
28
+ react_1.default.createElement(MonacoEditor, { language: language, value: value, options: options })))),
28
29
  react_1.default.createElement(uikit_1.Dialog.Footer, { textButtonApply: (0, i18n_1.default)('button_cancel'), onClickButtonApply: handleClose })));
29
30
  };
30
31
  exports.MonacoViewDialog = MonacoViewDialog;
@@ -1,4 +1,4 @@
1
- import type { AlertProps, LabelProps } from '@gravity-ui/uikit';
1
+ import type { AlertProps, ButtonSize, LabelProps, TextProps } from '@gravity-ui/uikit';
2
2
  import type { ColorTextBaseProps } from '@gravity-ui/uikit/build/esm/components/Text/colorText/colorText';
3
3
  import type { ReadAsMethod, SpecTypes } from '../constants';
4
4
  import type { ArrayValue, ObjectValue } from './';
@@ -140,6 +140,11 @@ export interface StringSpec<LinkType = any, InputComponentProps extends Record<s
140
140
  monacoParams?: {
141
141
  language?: string;
142
142
  fontSize?: number;
143
+ headerIconSize?: number;
144
+ headerIconIndent?: number;
145
+ headerTitleVariant?: TextProps['variant'];
146
+ headerDialogButtonSize?: ButtonSize;
147
+ headerDialogIconSize?: number;
143
148
  };
144
149
  hideValues?: string[];
145
150
  placeholder?: string;
@@ -24,4 +24,9 @@
24
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
+ box-sizing: border-box;
28
+ }
29
+ .df-monaco-header__title {
30
+ display: flex;
31
+ align-items: center;
27
32
  }
@@ -1,8 +1,12 @@
1
1
  import React from 'react';
2
+ import { type TextProps } from '@gravity-ui/uikit';
2
3
  import './MonacoHeader.css';
3
4
  interface MonacoHeaderProps {
4
- language?: string;
5
- editButton?: React.ReactNode;
5
+ language: string;
6
+ dialogButton?: React.ReactNode;
7
+ headerIconSize: number;
8
+ headerIconIndent: number;
9
+ headerTitleVariant: TextProps['variant'];
6
10
  }
7
11
  export declare const MonacoHeader: React.FC<MonacoHeaderProps>;
8
12
  export {};
@@ -4,7 +4,8 @@ import { Icon, Text } from '@gravity-ui/uikit';
4
4
  import { block } from '../../../utils';
5
5
  import './MonacoHeader.css';
6
6
  const b = block('monaco-header');
7
- export const MonacoHeader = ({ language, editButton }) => (React.createElement("div", { className: b() },
8
- React.createElement("div", null,
9
- React.createElement(Icon, { data: File, size: 18 }),
10
- React.createElement(Text, { variant: "body-3" }, language)), editButton !== null && editButton !== void 0 ? editButton : null));
7
+ export const MonacoHeader = ({ language, dialogButton, headerIconSize, headerIconIndent, headerTitleVariant, }) => (React.createElement("div", { className: b() },
8
+ React.createElement("div", { className: b('title') },
9
+ React.createElement("div", { style: { marginRight: `${headerIconIndent}px` } },
10
+ React.createElement(Icon, { data: File, size: headerIconSize })),
11
+ React.createElement(Text, { variant: headerTitleVariant }, language)), dialogButton !== null && dialogButton !== void 0 ? dialogButton : null));
@@ -19,7 +19,15 @@
19
19
  /* Border-radius */
20
20
  .df-monaco-input {
21
21
  width: var(--df-monaco-input-width, 550px);
22
+ height: var(--df-monaco-input-height, 354px);
22
23
  }
23
24
  .df-monaco-input__container {
25
+ height: calc(100% - 2px);
26
+ display: flex;
27
+ flex-direction: column;
24
28
  border: 1px solid var(--g-color-line-generic);
29
+ box-sizing: content-box;
30
+ }
31
+ .df-monaco-input__editor {
32
+ flex: 1;
25
33
  }
@@ -12,17 +12,17 @@ export const MonacoInputBase = ({ name, input, spec, MonacoComponent, withoutDia
12
12
  const { value, onChange } = input;
13
13
  const MonacoEditor = useMonaco() || MonacoComponent;
14
14
  const { monacoParams, disabled, layoutTitle } = spec.viewSpec;
15
- const { language, fontSize } = monacoParams !== null && monacoParams !== void 0 ? monacoParams : { language: 'plaintext', fontSize: 11 };
15
+ const { language = 'plaintext', fontSize = 11, headerIconSize = 18, headerIconIndent = 5, headerTitleVariant = 'body-2', headerDialogButtonSize = 'm', headerDialogIconSize = 16, } = monacoParams || {};
16
16
  const [monacoEditorDialog, setMonacoEditorDialog] = React.useState(false);
17
17
  const [monacoValue, setMonacoValue] = React.useState(value);
18
18
  const handleMonacoEditorDialogClose = React.useCallback(() => setMonacoEditorDialog(false), []);
19
19
  const dialogButton = React.useMemo(() => {
20
20
  if (!withoutDialog) {
21
- return (React.createElement(Button, { onClick: () => setMonacoEditorDialog(true), qa: `${name}-open-dialog` },
22
- React.createElement(Icon, { data: ChevronsExpandUpRight, size: 16 })));
21
+ return (React.createElement(Button, { size: headerDialogButtonSize, onClick: () => setMonacoEditorDialog(true), qa: `${name}-open-dialog` },
22
+ React.createElement(Icon, { data: ChevronsExpandUpRight, size: headerDialogIconSize })));
23
23
  }
24
24
  return;
25
- }, [withoutDialog, setMonacoEditorDialog, name]);
25
+ }, [withoutDialog, setMonacoEditorDialog, name, headerDialogButtonSize, headerDialogIconSize]);
26
26
  React.useEffect(() => onChange(monacoValue), [monacoValue]);
27
27
  const options = useMonacoOptions(fontSize, disabled !== null && disabled !== void 0 ? disabled : false);
28
28
  if (!MonacoEditor) {
@@ -30,8 +30,9 @@ export const MonacoInputBase = ({ name, input, spec, MonacoComponent, withoutDia
30
30
  }
31
31
  return (React.createElement("div", { className: b() },
32
32
  React.createElement("div", { className: b('container'), "data-qa": name },
33
- React.createElement(MonacoHeader, { language: language, editButton: dialogButton }),
34
- React.createElement(MonacoEditor, { language: language, value: monacoValue, height: "300", onChange: setMonacoValue, options: options })),
35
- React.createElement(MonacoInputDialog, { name: name, title: layoutTitle, fontSize: fontSize, value: monacoValue, visible: monacoEditorDialog, language: language, changeMonacoValue: setMonacoValue, onChange: onChange, onClose: handleMonacoEditorDialogClose, MonacoComponent: MonacoComponent })));
33
+ React.createElement(MonacoHeader, { language: language, dialogButton: dialogButton, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant }),
34
+ React.createElement("div", { className: b('editor') },
35
+ React.createElement(MonacoEditor, { language: language, value: monacoValue, onChange: setMonacoValue, options: options }))),
36
+ React.createElement(MonacoInputDialog, { name: name, title: layoutTitle, fontSize: fontSize, value: monacoValue, visible: monacoEditorDialog, language: language, changeMonacoValue: setMonacoValue, onChange: onChange, onClose: handleMonacoEditorDialogClose, MonacoComponent: MonacoComponent, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant })));
36
37
  };
37
38
  export const MonacoInput = (props) => (React.createElement(MonacoInputBase, Object.assign({}, props)));
@@ -17,11 +17,22 @@
17
17
  }
18
18
  */
19
19
  /* Border-radius */
20
+ .df-monaco-input-dialog {
21
+ width: var(--df-monaco-input-dialog-width, 966px);
22
+ height: var(--df-monaco-input-dialog-height, 804px);
23
+ }
20
24
  .df-monaco-input-dialog .g-dialog-footer {
21
25
  padding: var(--df-monaco-input-dialog-dialog-footer-padding, var(--g-spacing-2) var(--g-spacing-8) var(--g-spacing-8));
22
26
  }
23
27
  .df-monaco-input-dialog__container {
28
+ height: calc(100% - 2px);
29
+ display: flex;
30
+ flex-direction: column;
24
31
  border: 1px solid var(--g-color-line-generic);
32
+ box-sizing: content-box;
33
+ }
34
+ .df-monaco-input-dialog__editor {
35
+ flex: 1;
25
36
  }
26
37
  .df-monaco-input-dialog__dialog-header .g-dialog-header__caption {
27
38
  min-height: var(--df-monaco-dialog-header-caption-min-height, 24px);
@@ -1,17 +1,21 @@
1
1
  import React from 'react';
2
+ import { type TextProps } from '@gravity-ui/uikit';
2
3
  import type { MonacoEditorProps } from 'react-monaco-editor/lib/types';
3
4
  import './MonacoInputDialog.css';
4
5
  interface MonacoInputDialogProps {
5
6
  name: string;
6
7
  visible: boolean;
7
8
  value: string;
8
- language?: string;
9
+ language: string;
9
10
  title: string | undefined;
10
11
  fontSize: number | undefined;
11
12
  onChange: (value: string) => void;
12
13
  onClose: () => void;
13
14
  changeMonacoValue: (value: string) => void;
14
15
  MonacoComponent?: React.ComponentType<MonacoEditorProps>;
16
+ headerIconSize: number;
17
+ headerIconIndent: number;
18
+ headerTitleVariant: TextProps['variant'];
15
19
  }
16
20
  export declare const MonacoInputDialog: React.FC<MonacoInputDialogProps>;
17
21
  export {};
@@ -7,7 +7,7 @@ import { MonacoHeader } from './MonacoHeader';
7
7
  import { useMonacoOptions } from './useMonacoOptions';
8
8
  import './MonacoInputDialog.css';
9
9
  const b = block('monaco-input-dialog');
10
- export const MonacoInputDialog = ({ name, value, title, visible, language, onChange, onClose, changeMonacoValue, fontSize, MonacoComponent, }) => {
10
+ export const MonacoInputDialog = ({ name, value, title, visible, language, onChange, onClose, changeMonacoValue, fontSize, MonacoComponent, headerIconSize, headerIconIndent, headerTitleVariant, }) => {
11
11
  const MonacoEditor = useMonaco() || MonacoComponent;
12
12
  const handleClose = React.useCallback(() => {
13
13
  onChange(value);
@@ -21,7 +21,8 @@ export const MonacoInputDialog = ({ name, value, title, visible, language, onCha
21
21
  React.createElement(Dialog.Header, { caption: title, className: b('dialog-header') }),
22
22
  React.createElement(Dialog.Body, null,
23
23
  React.createElement("div", { className: b('container'), "data-qa": `${name}-dialog` },
24
- React.createElement(MonacoHeader, { language: language }),
25
- React.createElement(MonacoEditor, { language: language, height: "600", width: "900", value: value, onChange: changeMonacoValue, options: options }))),
24
+ React.createElement(MonacoHeader, { language: language, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant }),
25
+ React.createElement("div", { className: b('editor') },
26
+ React.createElement(MonacoEditor, { language: language, value: value, onChange: changeMonacoValue, options: options })))),
26
27
  React.createElement(Dialog.Footer, { textButtonApply: i18n('button_cancel'), onClickButtonApply: handleClose })));
27
28
  };
@@ -18,6 +18,16 @@
18
18
  */
19
19
  /* Border-radius */
20
20
  .df-monaco-base-view {
21
- border: 1px solid var(--g-color-line-generic);
22
21
  width: var(--df-monaco-base-view-width, 550px);
22
+ height: var(--df-monaco-base-view-height, 354px);
23
+ }
24
+ .df-monaco-base-view__container {
25
+ height: calc(100% - 2px);
26
+ display: flex;
27
+ flex-direction: column;
28
+ border: 1px solid var(--g-color-line-generic);
29
+ box-sizing: content-box;
30
+ }
31
+ .df-monaco-base-view__editor {
32
+ flex: 1;
23
33
  }
@@ -8,20 +8,25 @@ import { useMonacoOptions } from '../../Inputs/MonacoInput/useMonacoOptions';
8
8
  import { MonacoViewDialog } from './MonacoViewDialog';
9
9
  import './MonacoBaseView.css';
10
10
  const b = block('monaco-base-view');
11
- const MonacoBaseView = ({ value, spec }) => {
11
+ const MonacoBaseView = ({ value, spec, name }) => {
12
12
  const { monacoParams, layoutTitle } = spec.viewSpec;
13
13
  const MonacoEditor = useMonaco();
14
- const { language, fontSize } = monacoParams !== null && monacoParams !== void 0 ? monacoParams : { language: 'plaintext', fontSize: 12 };
14
+ const { language = 'plaintext', fontSize = 11, headerIconSize = 18, headerIconIndent = 5, headerTitleVariant = 'body-2', headerDialogButtonSize = 'm', headerDialogIconSize = 16, } = monacoParams || {};
15
15
  const options = useMonacoOptions(fontSize, true);
16
16
  const [monacoEditorDialog, setMonacoEditorDialog] = React.useState(false);
17
17
  const handleMonacoEditorDialogClose = React.useCallback(() => setMonacoEditorDialog(false), []);
18
+ const dialogButton = React.useMemo(() => {
19
+ return (React.createElement(Button, { size: headerDialogButtonSize, onClick: () => setMonacoEditorDialog(true), qa: `${name}-open-dialog` },
20
+ React.createElement(Icon, { data: ChevronsExpandUpRight, size: headerDialogIconSize })));
21
+ }, [setMonacoEditorDialog, name, headerDialogButtonSize, headerDialogIconSize]);
18
22
  if (!value || !MonacoEditor) {
19
23
  return null;
20
24
  }
21
25
  return (React.createElement("div", { className: b() },
22
- React.createElement(MonacoHeader, { language: language, editButton: React.createElement(Button, { onClick: () => setMonacoEditorDialog(true) },
23
- React.createElement(Icon, { data: ChevronsExpandUpRight, size: 16 })) }),
24
- React.createElement(MonacoEditor, { language: language, value: value, height: '250', options: options }),
25
- React.createElement(MonacoViewDialog, { title: layoutTitle, fontSize: fontSize, value: value, visible: monacoEditorDialog, language: language, onClose: handleMonacoEditorDialogClose })));
26
+ React.createElement("div", { className: b('container'), "data-qa": name },
27
+ React.createElement(MonacoHeader, { language: language, dialogButton: dialogButton, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant }),
28
+ React.createElement("div", { className: b('editor') },
29
+ React.createElement(MonacoEditor, { language: language, value: value, options: options }))),
30
+ React.createElement(MonacoViewDialog, { title: layoutTitle, fontSize: fontSize, value: value, visible: monacoEditorDialog, language: language, onClose: handleMonacoEditorDialogClose, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant })));
26
31
  };
27
32
  export const MonacoView = (props) => React.createElement(MonacoBaseView, Object.assign({}, props));
@@ -17,11 +17,22 @@
17
17
  }
18
18
  */
19
19
  /* Border-radius */
20
+ .df-monaco-view-dialog {
21
+ width: var(--df-monaco-view-dialog-width, 966px);
22
+ height: var(--df-monaco-view-dialog-height, 804px);
23
+ }
20
24
  .df-monaco-view-dialog .g-dialog-footer {
21
25
  padding: var(--df-monaco-view-dialog-footer-padding, var(--g-spacing-4));
22
26
  }
23
27
  .df-monaco-view-dialog__container {
28
+ height: calc(100% - 2px);
29
+ display: flex;
30
+ flex-direction: column;
24
31
  border: 1px solid var(--g-color-line-generic);
32
+ box-sizing: content-box;
33
+ }
34
+ .df-monaco-view-dialog__editor {
35
+ flex: 1;
25
36
  }
26
37
  .df-monaco-view-dialog__dialog-header {
27
38
  height: var(--df-monaco-view-dialog-header-height, 48px);
@@ -1,12 +1,16 @@
1
1
  import React from 'react';
2
+ import { type TextProps } from '@gravity-ui/uikit';
2
3
  import './MonacoViewDialog.css';
3
4
  interface MonacoViewDialogProps {
4
5
  visible: boolean;
5
6
  value: string;
6
- language?: string;
7
+ language: string;
7
8
  title: string | undefined;
8
9
  fontSize: number | undefined;
9
10
  onClose: () => void;
11
+ headerIconSize: number;
12
+ headerIconIndent: number;
13
+ headerTitleVariant: TextProps['variant'];
10
14
  }
11
15
  export declare const MonacoViewDialog: React.FC<MonacoViewDialogProps>;
12
16
  export {};
@@ -7,7 +7,7 @@ import { MonacoHeader } from '../../Inputs/MonacoInput/MonacoHeader';
7
7
  import { useMonacoOptions } from '../../Inputs/MonacoInput/useMonacoOptions';
8
8
  import './MonacoViewDialog.css';
9
9
  const b = block('monaco-view-dialog');
10
- export const MonacoViewDialog = ({ value, title, visible, language, onClose, fontSize, }) => {
10
+ export const MonacoViewDialog = ({ value, title, visible, language, onClose, fontSize, headerIconSize, headerIconIndent, headerTitleVariant, }) => {
11
11
  const MonacoEditor = useMonaco();
12
12
  const handleClose = React.useCallback(() => {
13
13
  onClose();
@@ -20,7 +20,8 @@ export const MonacoViewDialog = ({ value, title, visible, language, onClose, fon
20
20
  React.createElement(Dialog.Header, { caption: title, className: b('dialog-header') }),
21
21
  React.createElement(Dialog.Body, null,
22
22
  React.createElement("div", { className: b('container') },
23
- React.createElement(MonacoHeader, { language: language }),
24
- React.createElement(MonacoEditor, { language: language, height: "600", width: "900", value: value, options: options }))),
23
+ React.createElement(MonacoHeader, { language: language, headerIconSize: headerIconSize, headerIconIndent: headerIconIndent, headerTitleVariant: headerTitleVariant }),
24
+ React.createElement("div", { className: b('editor') },
25
+ React.createElement(MonacoEditor, { language: language, value: value, options: options })))),
25
26
  React.createElement(Dialog.Footer, { textButtonApply: i18n('button_cancel'), onClickButtonApply: handleClose })));
26
27
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/dynamic-forms",
3
- "version": "5.5.0",
3
+ "version": "5.7.0",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "main": "build/cjs/index.js",