@gravity-ui/page-constructor 5.12.0 → 5.14.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 (150) hide show
  1. package/build/cjs/blocks/ContentLayout/schema.d.ts +4 -0
  2. package/build/cjs/blocks/Form/schema.d.ts +4 -0
  3. package/build/cjs/blocks/Info/schema.d.ts +8 -0
  4. package/build/cjs/blocks/Map/schema.d.ts +4 -0
  5. package/build/cjs/blocks/Media/schema.d.ts +8 -0
  6. package/build/cjs/blocks/Questions/schema.d.ts +4 -0
  7. package/build/cjs/blocks/Tabs/schema.d.ts +4 -0
  8. package/build/cjs/components/IconWrapper/IconWrapper.css +4 -2
  9. package/build/cjs/components/IconWrapper/IconWrapper.d.ts +2 -2
  10. package/build/cjs/components/IconWrapper/IconWrapper.js +3 -3
  11. package/build/cjs/constructor-items.d.ts +1 -1
  12. package/build/cjs/editor/components/AddBlock/AddBlock.css +1 -2
  13. package/build/cjs/editor/components/CodeEditor/CodeEditor.css +3 -1
  14. package/build/cjs/editor/components/ControlPanel/ControlPanel.css +2 -4
  15. package/build/cjs/editor/components/ControlPanel/ControlPanel.d.ts +4 -2
  16. package/build/cjs/editor/components/ControlPanel/ControlPanel.js +24 -15
  17. package/build/cjs/editor/components/ControlPanel/i18n/en.json +2 -1
  18. package/build/cjs/editor/components/ControlPanel/i18n/index.d.ts +1 -1
  19. package/build/cjs/editor/components/ControlPanel/i18n/ru.json +2 -1
  20. package/build/cjs/editor/components/Layout/Layout.css +10 -6
  21. package/build/cjs/editor/components/Layout/Layout.d.ts +4 -7
  22. package/build/cjs/editor/components/Layout/Layout.js +8 -10
  23. package/build/cjs/editor/components/PageSettings/PageSettings.css +26 -0
  24. package/build/cjs/editor/components/PageSettings/PageSettings.d.ts +11 -0
  25. package/build/cjs/editor/components/PageSettings/PageSettings.js +30 -0
  26. package/build/cjs/editor/components/PageSettings/i18n/en.json +3 -0
  27. package/build/cjs/editor/components/PageSettings/i18n/index.d.ts +1 -0
  28. package/build/cjs/editor/components/PageSettings/i18n/index.js +9 -0
  29. package/build/cjs/editor/components/PageSettings/i18n/ru.json +3 -0
  30. package/build/cjs/editor/containers/Editor/Editor.css +17 -0
  31. package/build/cjs/editor/containers/Editor/Editor.d.ts +1 -1
  32. package/build/cjs/editor/containers/Editor/Editor.js +17 -65
  33. package/build/cjs/editor/containers/Editor/hooks/useCode.d.ts +14 -0
  34. package/build/cjs/editor/containers/{Form/hooks.js → Editor/hooks/useCode.js} +4 -14
  35. package/build/cjs/editor/containers/Editor/hooks/useEditorState.d.ts +49 -0
  36. package/build/cjs/editor/containers/Editor/hooks/useEditorState.js +99 -0
  37. package/build/cjs/editor/containers/Form/Form.css +0 -10
  38. package/build/cjs/editor/containers/Form/Form.d.ts +1 -8
  39. package/build/cjs/editor/containers/Form/Form.js +14 -39
  40. package/build/cjs/editor/store/main/index.js +1 -1
  41. package/build/cjs/editor/store/settings/index.d.ts +3 -3
  42. package/build/cjs/editor/store/settings/index.js +4 -4
  43. package/build/cjs/editor/store/settings/reducer.d.ts +9 -9
  44. package/build/cjs/editor/store/settings/reducer.js +6 -6
  45. package/build/cjs/editor/types/index.d.ts +3 -4
  46. package/build/cjs/editor/types/index.js +7 -8
  47. package/build/cjs/models/constructor-items/blocks.d.ts +1 -0
  48. package/build/cjs/models/constructor-items/sub-blocks.d.ts +3 -3
  49. package/build/cjs/schema/constants.d.ts +4 -0
  50. package/build/cjs/schema/validators/common.d.ts +6 -0
  51. package/build/cjs/schema/validators/common.js +8 -1
  52. package/build/cjs/sub-blocks/BackgroundCard/BackgroundCard.css +3 -6
  53. package/build/cjs/sub-blocks/BackgroundCard/BackgroundCard.js +2 -5
  54. package/build/cjs/sub-blocks/BackgroundCard/schema.js +2 -2
  55. package/build/cjs/sub-blocks/BasicCard/BasicCard.css +4 -4
  56. package/build/cjs/sub-blocks/BasicCard/BasicCard.js +3 -6
  57. package/build/cjs/sub-blocks/BasicCard/schema.js +2 -2
  58. package/build/cjs/sub-blocks/Content/Content.css +11 -0
  59. package/build/cjs/sub-blocks/Content/Content.js +2 -2
  60. package/build/cjs/sub-blocks/Content/schema.d.ts +8 -0
  61. package/build/cjs/sub-blocks/Content/schema.js +4 -0
  62. package/build/cjs/sub-blocks/ImageCard/ImageCard.css +2 -0
  63. package/build/cjs/sub-blocks/ImageCard/ImageCard.js +4 -2
  64. package/build/cjs/sub-blocks/ImageCard/schema.d.ts +4 -0
  65. package/build/cjs/sub-blocks/ImageCard/schema.js +2 -2
  66. package/build/cjs/sub-blocks/LayoutItem/LayoutItem.css +3 -2
  67. package/build/cjs/sub-blocks/LayoutItem/LayoutItem.d.ts +1 -1
  68. package/build/cjs/sub-blocks/LayoutItem/LayoutItem.js +4 -6
  69. package/build/cjs/sub-blocks/LayoutItem/schema.d.ts +4 -0
  70. package/build/cjs/sub-blocks/LayoutItem/schema.js +1 -4
  71. package/build/esm/blocks/ContentLayout/schema.d.ts +4 -0
  72. package/build/esm/blocks/Form/schema.d.ts +4 -0
  73. package/build/esm/blocks/Info/schema.d.ts +8 -0
  74. package/build/esm/blocks/Map/schema.d.ts +4 -0
  75. package/build/esm/blocks/Media/schema.d.ts +8 -0
  76. package/build/esm/blocks/Questions/schema.d.ts +4 -0
  77. package/build/esm/blocks/Tabs/schema.d.ts +4 -0
  78. package/build/esm/components/IconWrapper/IconWrapper.css +4 -2
  79. package/build/esm/components/IconWrapper/IconWrapper.d.ts +2 -2
  80. package/build/esm/components/IconWrapper/IconWrapper.js +3 -3
  81. package/build/esm/constructor-items.d.ts +1 -1
  82. package/build/esm/editor/components/AddBlock/AddBlock.css +1 -2
  83. package/build/esm/editor/components/CodeEditor/CodeEditor.css +3 -1
  84. package/build/esm/editor/components/ControlPanel/ControlPanel.css +2 -4
  85. package/build/esm/editor/components/ControlPanel/ControlPanel.d.ts +4 -2
  86. package/build/esm/editor/components/ControlPanel/ControlPanel.js +26 -17
  87. package/build/esm/editor/components/ControlPanel/i18n/en.json +2 -1
  88. package/build/esm/editor/components/ControlPanel/i18n/index.d.ts +1 -1
  89. package/build/esm/editor/components/ControlPanel/i18n/ru.json +2 -1
  90. package/build/esm/editor/components/Layout/Layout.css +10 -6
  91. package/build/esm/editor/components/Layout/Layout.d.ts +4 -7
  92. package/build/esm/editor/components/Layout/Layout.js +9 -11
  93. package/build/esm/editor/components/PageSettings/PageSettings.css +26 -0
  94. package/build/esm/editor/components/PageSettings/PageSettings.d.ts +12 -0
  95. package/build/esm/editor/components/PageSettings/PageSettings.js +27 -0
  96. package/build/esm/editor/components/PageSettings/i18n/en.json +3 -0
  97. package/build/esm/editor/components/PageSettings/i18n/index.d.ts +1 -0
  98. package/build/esm/editor/components/PageSettings/i18n/index.js +5 -0
  99. package/build/esm/editor/components/PageSettings/i18n/ru.json +3 -0
  100. package/build/esm/editor/containers/Editor/Editor.css +17 -0
  101. package/build/esm/editor/containers/Editor/Editor.d.ts +2 -1
  102. package/build/esm/editor/containers/Editor/Editor.js +18 -66
  103. package/build/esm/editor/containers/Editor/hooks/useCode.d.ts +14 -0
  104. package/build/esm/editor/containers/{Form/hooks.js → Editor/hooks/useCode.js} +4 -14
  105. package/build/esm/editor/containers/Editor/hooks/useEditorState.d.ts +49 -0
  106. package/build/esm/editor/containers/Editor/hooks/useEditorState.js +95 -0
  107. package/build/esm/editor/containers/Form/Form.css +0 -10
  108. package/build/esm/editor/containers/Form/Form.d.ts +1 -8
  109. package/build/esm/editor/containers/Form/Form.js +16 -42
  110. package/build/esm/editor/store/main/index.js +1 -1
  111. package/build/esm/editor/store/settings/index.d.ts +3 -3
  112. package/build/esm/editor/store/settings/index.js +5 -5
  113. package/build/esm/editor/store/settings/reducer.d.ts +9 -9
  114. package/build/esm/editor/store/settings/reducer.js +6 -6
  115. package/build/esm/editor/types/index.d.ts +3 -4
  116. package/build/esm/editor/types/index.js +6 -7
  117. package/build/esm/models/constructor-items/blocks.d.ts +1 -0
  118. package/build/esm/models/constructor-items/sub-blocks.d.ts +3 -3
  119. package/build/esm/schema/constants.d.ts +4 -0
  120. package/build/esm/schema/validators/common.d.ts +6 -0
  121. package/build/esm/schema/validators/common.js +6 -0
  122. package/build/esm/sub-blocks/BackgroundCard/BackgroundCard.css +3 -6
  123. package/build/esm/sub-blocks/BackgroundCard/BackgroundCard.js +3 -6
  124. package/build/esm/sub-blocks/BackgroundCard/schema.js +3 -3
  125. package/build/esm/sub-blocks/BasicCard/BasicCard.css +4 -4
  126. package/build/esm/sub-blocks/BasicCard/BasicCard.js +4 -7
  127. package/build/esm/sub-blocks/BasicCard/schema.js +3 -3
  128. package/build/esm/sub-blocks/Content/Content.css +11 -0
  129. package/build/esm/sub-blocks/Content/Content.js +2 -2
  130. package/build/esm/sub-blocks/Content/schema.d.ts +8 -0
  131. package/build/esm/sub-blocks/Content/schema.js +4 -0
  132. package/build/esm/sub-blocks/ImageCard/ImageCard.css +2 -0
  133. package/build/esm/sub-blocks/ImageCard/ImageCard.js +4 -2
  134. package/build/esm/sub-blocks/ImageCard/schema.d.ts +4 -0
  135. package/build/esm/sub-blocks/ImageCard/schema.js +3 -3
  136. package/build/esm/sub-blocks/LayoutItem/LayoutItem.css +3 -2
  137. package/build/esm/sub-blocks/LayoutItem/LayoutItem.d.ts +1 -1
  138. package/build/esm/sub-blocks/LayoutItem/LayoutItem.js +5 -7
  139. package/build/esm/sub-blocks/LayoutItem/schema.d.ts +4 -0
  140. package/build/esm/sub-blocks/LayoutItem/schema.js +2 -5
  141. package/package.json +1 -1
  142. package/server/models/constructor-items/blocks.d.ts +1 -0
  143. package/server/models/constructor-items/sub-blocks.d.ts +3 -3
  144. package/widget/index.js +1 -1
  145. package/build/cjs/editor/components/PagePropsForm/PagePropsForm.d.ts +0 -10
  146. package/build/cjs/editor/components/PagePropsForm/PagePropsForm.js +0 -17
  147. package/build/cjs/editor/containers/Form/hooks.d.ts +0 -8
  148. package/build/esm/editor/components/PagePropsForm/PagePropsForm.d.ts +0 -10
  149. package/build/esm/editor/components/PagePropsForm/PagePropsForm.js +0 -13
  150. package/build/esm/editor/containers/Form/hooks.d.ts +0 -8
@@ -4,36 +4,26 @@ exports.useCode = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = require("react");
6
6
  const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
7
- const usePreviousValue_1 = tslib_1.__importDefault(require("../../hooks/usePreviousValue"));
8
- const types_1 = require("../../types");
7
+ const usePreviousValue_1 = tslib_1.__importDefault(require("../../../hooks/usePreviousValue"));
9
8
  /**
10
9
  * Transorms PageConstructor content in JSON to YAML on code editor mode switching
11
10
  *
12
11
  * @param {Object} props - props parent from form
13
12
  * @returns {string} - updated code
14
13
  */
15
- function useCode({ activeTab, content, codeFullscreeModeOn, }) {
14
+ function useCode({ content, codeFullscreeModeOn, isCodeEditMode }) {
16
15
  var _a;
17
16
  const [code, setCode] = (0, react_1.useState)('');
18
- const prevTab = (0, usePreviousValue_1.default)(activeTab);
19
17
  const prevContentLength = (0, usePreviousValue_1.default)((_a = content.blocks) === null || _a === void 0 ? void 0 : _a.length);
20
18
  const prevCodeFullscreeModeOn = (0, usePreviousValue_1.default)(codeFullscreeModeOn);
21
19
  (0, react_1.useEffect)(() => {
22
20
  var _a;
23
- const switchedToCodeEditing = activeTab !== prevTab && activeTab === types_1.FormTab.Code;
24
21
  const blocksCountChanged = prevContentLength !== ((_a = content.blocks) === null || _a === void 0 ? void 0 : _a.length);
25
22
  const codeModeSwitched = codeFullscreeModeOn !== prevCodeFullscreeModeOn;
26
- if (blocksCountChanged || switchedToCodeEditing || codeModeSwitched) {
23
+ if (blocksCountChanged || isCodeEditMode || codeModeSwitched) {
27
24
  setCode(js_yaml_1.default.dump(content, { lineWidth: -1 }));
28
25
  }
29
- }, [
30
- activeTab,
31
- prevTab,
32
- content,
33
- prevContentLength,
34
- codeFullscreeModeOn,
35
- prevCodeFullscreeModeOn,
36
- ]);
26
+ }, [isCodeEditMode, content, prevContentLength, codeFullscreeModeOn, prevCodeFullscreeModeOn]);
37
27
  return code;
38
28
  }
39
29
  exports.useCode = useCode;
@@ -0,0 +1,49 @@
1
+ import { EditModeItem, EditorProps, ViewModeItem } from '../../../types';
2
+ export declare const useEditorState: ({ customSchema, onChange, providerProps, transformContent, deviceEmulationSettings, theme: editorTheme, ...rest }: EditorProps) => {
3
+ context: {
4
+ constructorProps: {
5
+ content: import("../../../../models").PageContent;
6
+ custom: import("../../../../models").CustomConfig | undefined;
7
+ };
8
+ providerProps: {
9
+ isMobile: boolean;
10
+ theme: import("../../../../models").Theme;
11
+ locale?: import("../../../../context/localeContext").LocaleContextProps | undefined;
12
+ location?: import("../../../../context/locationContext").LocationContextProps | undefined;
13
+ ssrConfig?: import("../../../../context/ssrContext").SSRContextProps | undefined;
14
+ mapsContext?: import("../../../../context/mapsContext/mapsContext").MapsContextType | undefined;
15
+ projectSettings?: import("../../../../context/projectSettingsContext").ProjectSettingsContextProps | undefined;
16
+ analytics?: import("../../../..").AnalyticsContextProps | undefined;
17
+ forms?: import("../../../../context/formsContext").FormsContextProps | undefined;
18
+ image?: import("../../../../context/imageContext").ImageContextProps | undefined;
19
+ };
20
+ deviceEmulationSettings: import("../../../types").DeviceEmulationSettings | undefined;
21
+ theme: import("../../../../models").Theme | undefined;
22
+ };
23
+ viewMode: ViewModeItem;
24
+ editMode: EditModeItem;
25
+ constructorTheme: import("../../../../models").Theme;
26
+ onThemeUpdate: (newTheme: import("../../../../models").Theme) => void;
27
+ onViewModeUpdate: (newViewMode: ViewModeItem) => void;
28
+ onEditModeUpdate: (newEditMode: EditModeItem) => void;
29
+ isCodeEditMode: boolean;
30
+ isDesktopViewMode: boolean;
31
+ content: import("../../../../models").PageContent;
32
+ schema: import("json-schema").JSONSchema4;
33
+ onContentUpdate: (newContent: import("../../../../models").PageContent) => void;
34
+ code: string;
35
+ codeValidator: import("../../../hooks/useCodeValidator").CodeValidator;
36
+ codeFullscreeModeOn: boolean;
37
+ onCodeFullscreeModeOnUpdate: (newCodeFullscreeModeOn: boolean) => void;
38
+ activeBlockIndex: number;
39
+ onSelect: (index: number) => void;
40
+ isCodeOnlyMode: boolean;
41
+ errorBoundaryState: number;
42
+ outgoingProps: {
43
+ content: import("../../../../models").PageContent;
44
+ custom: import("../../../../models").CustomConfig | undefined;
45
+ viewMode: ViewModeItem;
46
+ };
47
+ onAdd: (block: import("../../../../models").Block) => void;
48
+ isFormEditMode: boolean;
49
+ };
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useEditorState = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const schema_1 = require("../../../../schema");
7
+ const EditBlock_1 = tslib_1.__importDefault(require("../../../components/EditBlock/EditBlock"));
8
+ const ErrorBoundary_1 = require("../../../components/ErrorBoundary/ErrorBoundary");
9
+ const NotFoundBlock_1 = require("../../../components/NotFoundBlock/NotFoundBlock");
10
+ const useCodeValidator_1 = require("../../../hooks/useCodeValidator");
11
+ const main_1 = require("../../../store/main");
12
+ const settings_1 = require("../../../store/settings");
13
+ const types_1 = require("../../../types");
14
+ const utils_1 = require("../../../utils");
15
+ const useCode_1 = require("./useCode");
16
+ // Editor business logic
17
+ const useEditorState = (_a) => {
18
+ var { customSchema, onChange, providerProps, transformContent, deviceEmulationSettings, theme: editorTheme } = _a, rest = tslib_1.__rest(_a, ["customSchema", "onChange", "providerProps", "transformContent", "deviceEmulationSettings", "theme"]);
19
+ const { content, activeBlockIndex, errorBoundaryState, onContentUpdate, onAdd, onSelect, injectEditBlockProps, } = (0, main_1.useMainState)(rest);
20
+ const { viewMode, editMode, onEditModeUpdate, theme: constructorTheme, onViewModeUpdate, onThemeUpdate, codeFullscreeModeOn, onCodeFullscreeModeOnUpdate, } = (0, settings_1.useSettingsState)();
21
+ const isCodeEditMode = editMode === types_1.EditModeItem.Code;
22
+ const isViewEditMode = editMode === types_1.EditModeItem.View;
23
+ const isFormEditMode = editMode === types_1.EditModeItem.Form;
24
+ const isDesktopViewMode = viewMode === types_1.ViewModeItem.Desktop;
25
+ const isCodeOnlyMode = codeFullscreeModeOn && isCodeEditMode;
26
+ const transformedContent = (0, react_1.useMemo)(() => (transformContent ? transformContent(content, { viewMode }) : content), [content, transformContent, viewMode]);
27
+ const schema = (0, react_1.useMemo)(() => (0, schema_1.generateDefaultSchema)(customSchema), [customSchema]);
28
+ const codeValidator = (0, useCodeValidator_1.useCodeValidator)(schema);
29
+ const outgoingProps = (0, react_1.useMemo)(() => {
30
+ const custom = isCodeEditMode || isViewEditMode
31
+ ? rest.custom
32
+ : (0, utils_1.addCustomDecorator)([
33
+ (props) => react_1.default.createElement(NotFoundBlock_1.NotFoundBlock, Object.assign({}, props)),
34
+ (props) => (react_1.default.createElement(EditBlock_1.default, Object.assign({}, injectEditBlockProps(props)))),
35
+ // need errorBoundaryState flag to reset error on content update
36
+ (props) => (react_1.default.createElement(ErrorBoundary_1.ErrorBoundary, Object.assign({}, props, { key: `${(0, utils_1.getBlockId)(props)}-${errorBoundaryState}` }))),
37
+ ], rest.custom);
38
+ return {
39
+ content: transformedContent,
40
+ custom,
41
+ viewMode,
42
+ };
43
+ }, [
44
+ injectEditBlockProps,
45
+ errorBoundaryState,
46
+ viewMode,
47
+ transformedContent,
48
+ rest.custom,
49
+ isCodeEditMode,
50
+ isViewEditMode,
51
+ ]);
52
+ const context = (0, react_1.useMemo)(() => ({
53
+ constructorProps: {
54
+ content: transformedContent,
55
+ custom: rest.custom,
56
+ },
57
+ providerProps: Object.assign(Object.assign({}, providerProps), { isMobile: (0, utils_1.checkIsMobile)(viewMode), theme: constructorTheme }),
58
+ deviceEmulationSettings,
59
+ theme: editorTheme,
60
+ }), [
61
+ providerProps,
62
+ rest.custom,
63
+ viewMode,
64
+ transformedContent,
65
+ deviceEmulationSettings,
66
+ constructorTheme,
67
+ editorTheme,
68
+ ]);
69
+ (0, react_1.useEffect)(() => {
70
+ onChange === null || onChange === void 0 ? void 0 : onChange(content);
71
+ }, [content, onChange]);
72
+ const code = (0, useCode_1.useCode)({ isCodeEditMode, content, codeFullscreeModeOn });
73
+ return {
74
+ context,
75
+ viewMode,
76
+ editMode,
77
+ constructorTheme,
78
+ onThemeUpdate,
79
+ onViewModeUpdate,
80
+ onEditModeUpdate,
81
+ isCodeEditMode,
82
+ isDesktopViewMode,
83
+ content,
84
+ schema,
85
+ onContentUpdate,
86
+ code,
87
+ codeValidator,
88
+ codeFullscreeModeOn,
89
+ onCodeFullscreeModeOnUpdate,
90
+ activeBlockIndex,
91
+ onSelect,
92
+ isCodeOnlyMode,
93
+ errorBoundaryState,
94
+ outgoingProps,
95
+ onAdd,
96
+ isFormEditMode,
97
+ };
98
+ };
99
+ exports.useEditorState = useEditorState;
@@ -82,16 +82,6 @@ unpredictable css rules order in build */
82
82
  .pc-editor-form + .pc-editor-form {
83
83
  margin-top: 12px;
84
84
  }
85
- .pc-editor-form__tabs {
86
- --g-color-base-brand: var(--pc-color-base-neon);
87
- margin-bottom: 20px;
88
- }
89
85
  .pc-editor-form__block-form {
90
86
  margin-bottom: 16px;
91
- }
92
- .pc-editor-form_code-editor-active {
93
- height: calc(100% - var(--pc-editor-code-header-height));
94
- }
95
- .pc-editor-form_code-editor-active .pc-editor-form__tabs {
96
- margin-bottom: 0;
97
87
  }
@@ -1,18 +1,11 @@
1
1
  import React from 'react';
2
2
  import { JSONSchema4 } from 'json-schema';
3
3
  import { PageContent } from '../../../models';
4
- import { FormTab } from '../../types';
5
- import { CodeEditorMessageProps } from '../../utils/validation';
6
4
  export interface FormProps {
7
5
  content: PageContent;
8
6
  schema: JSONSchema4;
9
7
  activeBlockIndex: number;
10
- activeTab: FormTab;
11
- codeFullscreeModeOn: boolean;
12
- onActiveTabUpdate: (tab: FormTab) => void;
13
- onCodeFullscreeModeOnUpdate: (codeFullscreeModeOn: boolean) => void;
14
- codeValidator: (code: string) => CodeEditorMessageProps;
15
8
  onChange: (content: PageContent) => void;
16
9
  onSelect: (index: number) => void;
17
10
  }
18
- export declare const Form: React.MemoExoticComponent<({ content, onChange, activeBlockIndex, onSelect, schema, codeValidator, activeTab, onActiveTabUpdate, codeFullscreeModeOn, onCodeFullscreeModeOnUpdate, }: FormProps) => JSX.Element>;
11
+ export declare const Form: React.MemoExoticComponent<({ content, onChange, activeBlockIndex, onSelect, schema }: FormProps) => JSX.Element>;
@@ -6,47 +6,22 @@ const react_1 = tslib_1.__importStar(require("react"));
6
6
  const uikit_1 = require("@gravity-ui/uikit");
7
7
  const utils_1 = require("../../../utils");
8
8
  const BlockForm_1 = require("../../components/BlockForm/BlockForm");
9
- const CodeEditor_1 = require("../../components/CodeEditor/CodeEditor");
10
- const PagePropsForm_1 = require("../../components/PagePropsForm/PagePropsForm");
11
9
  const useFormSpec_1 = tslib_1.__importDefault(require("../../hooks/useFormSpec"));
12
- const types_1 = require("../../types");
13
- const hooks_1 = require("./hooks");
14
10
  const b = (0, utils_1.block)('editor-form');
15
- const tabsItems = Object.values(types_1.FormTab).map((tab) => ({
16
- id: tab,
17
- title: tab,
18
- }));
19
- exports.Form = (0, react_1.memo)(({ content, onChange, activeBlockIndex, onSelect, schema, codeValidator, activeTab, onActiveTabUpdate, codeFullscreeModeOn, onCodeFullscreeModeOnUpdate, }) => {
20
- const _a = content || {}, { blocks } = _a, page = tslib_1.__rest(_a, ["blocks"]);
21
- const code = (0, hooks_1.useCode)({ activeTab, content, codeFullscreeModeOn });
11
+ // TODO in https://github.com/gravity-ui/page-constructor/issues/884 this component will be extremely refactor
12
+ exports.Form = (0, react_1.memo)(({ content, onChange, activeBlockIndex, onSelect, schema }) => {
13
+ const { blocks } = content || {};
22
14
  const spec = (0, useFormSpec_1.default)(schema);
23
- const { blocks: blocksSpec, page: pageSpec } = spec || {};
24
- let form;
25
- switch (activeTab) {
26
- case types_1.FormTab.Page: {
27
- form = (react_1.default.createElement(PagePropsForm_1.PagePropsForm, { spec: pageSpec, data: page, onChange: (data) => {
28
- return onChange(Object.assign(Object.assign({}, content), data));
29
- } }));
30
- break;
31
- }
32
- case types_1.FormTab.Blocks: {
33
- form = (react_1.default.createElement(react_1.Fragment, null, blocks.map((blockData, index) => blocksSpec[blockData.type] ? (react_1.default.createElement("div", { className: b('block-form'), key: (0, utils_1.getBlockKey)(blockData, index) },
34
- react_1.default.createElement(BlockForm_1.BlockForm, { spec: blocksSpec[blockData.type], data: blockData, active: activeBlockIndex === index, onChange: (data) => {
35
- onChange(Object.assign(Object.assign({}, content), { blocks: [
36
- ...blocks.slice(0, index),
37
- data,
38
- ...blocks.slice(index + 1),
39
- ] }));
40
- }, onSelect: () => onSelect(index) }))) : null)));
41
- break;
42
- }
43
- case types_1.FormTab.Code: {
44
- form = (react_1.default.createElement(CodeEditor_1.CodeEditor, { code: code, onChange: onChange, validator: codeValidator, fullscreenModeOn: codeFullscreeModeOn, onFullscreenModeOnUpdate: onCodeFullscreeModeOnUpdate }));
45
- break;
46
- }
47
- }
48
- return (react_1.default.createElement("div", { className: b({ 'code-editor-active': activeTab === types_1.FormTab.Code }) },
49
- react_1.default.createElement(uikit_1.Tabs, { activeTab: activeTab, className: b('tabs'), items: tabsItems, onSelectTab: onActiveTabUpdate }),
50
- form));
15
+ const { blocks: blocksSpec } = spec || {};
16
+ return (react_1.default.createElement("div", { className: b() },
17
+ react_1.default.createElement(uikit_1.Text, { variant: "body-2" }, 'Blocks'),
18
+ blocks.map((blockData, index) => blocksSpec[blockData.type] ? (react_1.default.createElement("div", { className: b('block-form'), key: (0, utils_1.getBlockKey)(blockData, index) },
19
+ react_1.default.createElement(BlockForm_1.BlockForm, { spec: blocksSpec[blockData.type], data: blockData, active: activeBlockIndex === index, onChange: (data) => {
20
+ onChange(Object.assign(Object.assign({}, content), { blocks: [
21
+ ...blocks.slice(0, index),
22
+ data,
23
+ ...blocks.slice(index + 1),
24
+ ] }));
25
+ }, onSelect: () => onSelect(index) }))) : null)));
51
26
  });
52
27
  exports.Form.displayName = 'Form';
@@ -15,7 +15,7 @@ function useMainState({ content: intialContent, custom }) {
15
15
  activeBlockIndex: 0,
16
16
  errorBoundaryState: 0,
17
17
  content: (0, utils_2.addEditorProps)(intialContent),
18
- viewMode: types_1.ViewModeItem.Edititng,
18
+ viewMode: types_1.ViewModeItem.Desktop,
19
19
  theme: constants_1.DEFAULT_THEME,
20
20
  });
21
21
  return (0, react_1.useMemo)(() => {
@@ -1,12 +1,12 @@
1
1
  import { Theme } from '../../../models';
2
- import { FormTab, ViewModeItem } from '../../types';
2
+ import { EditModeItem, ViewModeItem } from '../../types';
3
3
  export declare function useSettingsState(): {
4
- formTab: FormTab;
5
4
  viewMode: ViewModeItem;
5
+ editMode: EditModeItem;
6
6
  theme: Theme;
7
7
  codeFullscreeModeOn: boolean;
8
- onFormTabUpdate: (newFormTab: FormTab) => void;
9
8
  onViewModeUpdate: (newViewMode: ViewModeItem) => void;
9
+ onEditModeUpdate: (newEditMode: EditModeItem) => void;
10
10
  onThemeUpdate: (newTheme: Theme) => void;
11
11
  onCodeFullscreeModeOnUpdate: (newCodeFullscreeModeOn: boolean) => void;
12
12
  };
@@ -4,18 +4,18 @@ exports.useSettingsState = void 0;
4
4
  const react_1 = require("react");
5
5
  const reducer_1 = require("./reducer");
6
6
  function useSettingsState() {
7
- const [{ formTab, viewMode, theme, codeFullscreeModeOn }, dispatch] = (0, react_1.useReducer)(reducer_1.reducer, reducer_1.initialState);
7
+ const [{ viewMode, editMode, theme, codeFullscreeModeOn }, dispatch] = (0, react_1.useReducer)(reducer_1.reducer, reducer_1.initialState);
8
8
  return (0, react_1.useMemo)(() => {
9
9
  return {
10
- formTab,
11
10
  viewMode,
11
+ editMode,
12
12
  theme,
13
13
  codeFullscreeModeOn,
14
- onFormTabUpdate: (newFormTab) => dispatch({ type: reducer_1.UPDATE_FORM_TAB, payload: newFormTab }),
15
14
  onViewModeUpdate: (newViewMode) => dispatch({ type: reducer_1.UPDATE_VIEW_MODE, payload: newViewMode }),
15
+ onEditModeUpdate: (newEditMode) => dispatch({ type: reducer_1.UPDATE_EDIT_MODE, payload: newEditMode }),
16
16
  onThemeUpdate: (newTheme) => dispatch({ type: reducer_1.UPDATE_THEME, payload: newTheme }),
17
17
  onCodeFullscreeModeOnUpdate: (newCodeFullscreeModeOn) => dispatch({ type: reducer_1.UPDATE_CODE_FULLSCREEN_MODE_ON, payload: newCodeFullscreeModeOn }),
18
18
  };
19
- }, [formTab, viewMode, theme, codeFullscreeModeOn]);
19
+ }, [viewMode, theme, codeFullscreeModeOn, editMode]);
20
20
  }
21
21
  exports.useSettingsState = useSettingsState;
@@ -1,19 +1,23 @@
1
1
  import { Theme } from '../../../models';
2
- import { FormTab, ViewModeItem } from '../../types';
3
- export declare const UPDATE_FORM_TAB = "UPDATE_FORM_TAB";
2
+ import { EditModeItem, ViewModeItem } from '../../types';
4
3
  export declare const UPDATE_CODE_FULLSCREEN_MODE_ON = "UPDATE_CODE_FULLSCREEN_MODE_ON";
5
4
  export declare const UPDATE_VIEW_MODE = "UPDATE_VIEW_MODE";
5
+ export declare const UPDATE_EDIT_MODE = "UPDATE_EDIT_MODE";
6
6
  export declare const UPDATE_THEME = "UPDATE_THEME";
7
7
  interface EditorSettingsState {
8
8
  theme: Theme;
9
9
  viewMode: ViewModeItem;
10
+ editMode: EditModeItem;
10
11
  codeFullscreeModeOn: boolean;
11
- formTab: FormTab;
12
12
  }
13
13
  interface UpdateViewMode {
14
14
  type: typeof UPDATE_VIEW_MODE;
15
15
  payload: ViewModeItem;
16
16
  }
17
+ interface UpdateEditMode {
18
+ type: typeof UPDATE_EDIT_MODE;
19
+ payload: EditModeItem;
20
+ }
17
21
  interface UpdateTheme {
18
22
  type: typeof UPDATE_THEME;
19
23
  payload: Theme;
@@ -22,16 +26,12 @@ interface UpdateCodeFullscreenModeOn {
22
26
  type: typeof UPDATE_CODE_FULLSCREEN_MODE_ON;
23
27
  payload: boolean;
24
28
  }
25
- interface UpdateFormTab {
26
- type: typeof UPDATE_FORM_TAB;
27
- payload: FormTab;
28
- }
29
- export type EditorSettingsAction = UpdateViewMode | UpdateTheme | UpdateCodeFullscreenModeOn | UpdateFormTab;
29
+ export type EditorSettingsAction = UpdateViewMode | UpdateEditMode | UpdateTheme | UpdateCodeFullscreenModeOn;
30
30
  export declare const reducer: (state: EditorSettingsState, action: EditorSettingsAction) => EditorSettingsState;
31
31
  export declare const initialState: {
32
32
  viewMode: ViewModeItem;
33
+ editMode: EditModeItem;
33
34
  theme: Theme;
34
35
  codeFullscreeModeOn: boolean;
35
- formTab: FormTab;
36
36
  };
37
37
  export {};
@@ -1,32 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initialState = exports.reducer = exports.UPDATE_THEME = exports.UPDATE_VIEW_MODE = exports.UPDATE_CODE_FULLSCREEN_MODE_ON = exports.UPDATE_FORM_TAB = void 0;
3
+ exports.initialState = exports.reducer = exports.UPDATE_THEME = exports.UPDATE_EDIT_MODE = exports.UPDATE_VIEW_MODE = exports.UPDATE_CODE_FULLSCREEN_MODE_ON = void 0;
4
4
  const constants_1 = require("../../../components/constants");
5
5
  const types_1 = require("../../types");
6
6
  // actions
7
- exports.UPDATE_FORM_TAB = 'UPDATE_FORM_TAB';
8
7
  exports.UPDATE_CODE_FULLSCREEN_MODE_ON = 'UPDATE_CODE_FULLSCREEN_MODE_ON';
9
8
  exports.UPDATE_VIEW_MODE = 'UPDATE_VIEW_MODE';
9
+ exports.UPDATE_EDIT_MODE = 'UPDATE_EDIT_MODE';
10
10
  exports.UPDATE_THEME = 'UPDATE_THEME';
11
11
  // reducer
12
12
  const reducer = (state, action) => {
13
13
  switch (action.type) {
14
14
  case exports.UPDATE_VIEW_MODE:
15
15
  return Object.assign(Object.assign({}, state), { viewMode: action.payload });
16
+ case exports.UPDATE_EDIT_MODE:
17
+ return Object.assign(Object.assign({}, state), { editMode: action.payload });
16
18
  case exports.UPDATE_THEME:
17
19
  return Object.assign(Object.assign({}, state), { theme: action.payload });
18
20
  case exports.UPDATE_CODE_FULLSCREEN_MODE_ON:
19
21
  return Object.assign(Object.assign({}, state), { codeFullscreeModeOn: action.payload });
20
- case exports.UPDATE_FORM_TAB:
21
- return Object.assign(Object.assign({}, state), { formTab: action.payload });
22
22
  default:
23
23
  return state;
24
24
  }
25
25
  };
26
26
  exports.reducer = reducer;
27
27
  exports.initialState = {
28
- viewMode: types_1.ViewModeItem.Edititng,
28
+ viewMode: types_1.ViewModeItem.Desktop,
29
+ editMode: types_1.EditModeItem.Form,
29
30
  theme: constants_1.DEFAULT_THEME,
30
31
  codeFullscreeModeOn: false,
31
- formTab: types_1.FormTab.Blocks,
32
32
  };
@@ -29,14 +29,13 @@ export interface EditBlockProps extends EditBlockEditorProps, BlockDecorationPro
29
29
  isHeader?: boolean;
30
30
  }
31
31
  export declare enum ViewModeItem {
32
- Edititng = "editing",
33
32
  Desktop = "desktop",
34
33
  Tablet = "tablet",
35
34
  Mobile = "mobile"
36
35
  }
37
- export declare enum FormTab {
38
- Blocks = "blocks",
39
- Page = "page",
36
+ export declare enum EditModeItem {
37
+ View = "view",
38
+ Form = "form",
40
39
  Code = "code"
41
40
  }
42
41
  export {};
@@ -1,16 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FormTab = exports.ViewModeItem = void 0;
3
+ exports.EditModeItem = exports.ViewModeItem = void 0;
4
4
  var ViewModeItem;
5
5
  (function (ViewModeItem) {
6
- ViewModeItem["Edititng"] = "editing";
7
6
  ViewModeItem["Desktop"] = "desktop";
8
7
  ViewModeItem["Tablet"] = "tablet";
9
8
  ViewModeItem["Mobile"] = "mobile";
10
9
  })(ViewModeItem = exports.ViewModeItem || (exports.ViewModeItem = {}));
11
- var FormTab;
12
- (function (FormTab) {
13
- FormTab["Blocks"] = "blocks";
14
- FormTab["Page"] = "page";
15
- FormTab["Code"] = "code";
16
- })(FormTab = exports.FormTab || (exports.FormTab = {}));
10
+ var EditModeItem;
11
+ (function (EditModeItem) {
12
+ EditModeItem["View"] = "view";
13
+ EditModeItem["Form"] = "form";
14
+ EditModeItem["Code"] = "code";
15
+ })(EditModeItem = exports.EditModeItem || (exports.EditModeItem = {}));
@@ -302,6 +302,7 @@ export interface ContentBlockProps {
302
302
  centered?: boolean;
303
303
  theme?: ContentTheme;
304
304
  list?: ContentItemProps[];
305
+ controlPosition?: 'default' | 'bottom';
305
306
  }
306
307
  export declare enum PCShareSocialNetwork {
307
308
  Vk = "vk",
@@ -96,14 +96,14 @@ export interface QuoteProps extends Themable, CardBaseProps {
96
96
  quoteType?: QuoteType;
97
97
  button?: ButtonProps;
98
98
  }
99
- export interface BackgroundCardProps extends CardBaseProps, AnalyticsEventsBase, CardLayoutProps, Omit<ContentBlockProps, 'colSizes' | 'centered'> {
99
+ export interface BackgroundCardProps extends CardBaseProps, AnalyticsEventsBase, CardLayoutProps, Omit<ContentBlockProps, 'colSizes' | 'centered' | 'controlPosition'> {
100
100
  url?: string;
101
101
  urlTitle?: string;
102
102
  background?: ThemeSupporting<ImageObjectProps>;
103
103
  paddingBottom?: 's' | 'm' | 'l' | 'xl';
104
104
  backgroundColor?: string;
105
105
  }
106
- export interface BasicCardProps extends CardBaseProps, AnalyticsEventsBase, CardLayoutProps, Omit<ContentBlockProps, 'colSizes' | 'centered' | 'size' | 'theme'> {
106
+ export interface BasicCardProps extends CardBaseProps, AnalyticsEventsBase, CardLayoutProps, Omit<ContentBlockProps, 'colSizes' | 'centered' | 'size' | 'theme' | 'controlPosition'> {
107
107
  url: string;
108
108
  urlTitle?: string;
109
109
  icon?: ImageProps;
@@ -141,7 +141,7 @@ export interface LayoutItemProps extends ClassNameProps, CardLayoutProps, Analyt
141
141
  fullscreen?: boolean;
142
142
  icon?: PositionedIcon;
143
143
  }
144
- export interface ImageCardProps extends CardBaseProps, CardLayoutProps, Omit<ContentBlockProps, 'colSizes' | 'centered'> {
144
+ export interface ImageCardProps extends CardBaseProps, CardLayoutProps, Omit<ContentBlockProps, 'colSizes' | 'centered' | 'controlPosition'> {
145
145
  image: ImageProps;
146
146
  enableImageBorderRadius?: boolean;
147
147
  margins?: ImageCardMargins;
@@ -118,6 +118,10 @@ export declare const cardSchemas: {
118
118
  };
119
119
  };
120
120
  } | undefined;
121
+ controlPosition: {
122
+ type: string; /** @deprecated */
123
+ enum: string[];
124
+ };
121
125
  border: {
122
126
  type: string;
123
127
  enum: string[];
@@ -29,6 +29,12 @@ export declare const BaseProps: {
29
29
  type: string;
30
30
  };
31
31
  };
32
+ export declare const CardLayoutProps: {
33
+ controlPosition: {
34
+ type: string;
35
+ enum: string[];
36
+ };
37
+ };
32
38
  export declare const containerSizesObject: {
33
39
  type: string;
34
40
  additionalProperties: boolean;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BlockHeaderProps = exports.CardBase = exports.BorderProps = exports.MapProps = exports.YMapMarker = exports.YMapMarkerLabel = exports.MediaProps = exports.ButtonBlock = exports.TitleProps = exports.BlockBaseProps = exports.AnchorProps = exports.withTheme = exports.MenuProps = exports.ButtonProps = exports.authorItem = exports.FileLinkProps = exports.LinkProps = exports.BackgroundProps = exports.DataLensProps = exports.DataLensObjectProps = exports.JustifyProps = exports.ThemeProps = exports.VideoProps = exports.CustomControlsOptionsProps = exports.PlayButtonProps = exports.LoopProps = exports.ChildrenCardsProps = exports.ChildrenProps = exports.AnimatableProps = exports.sliderSizesObject = exports.containerSizesObject = exports.BaseProps = exports.customControlsButtonPositioning = exports.customControlsType = exports.mediaView = exports.quoteTypes = exports.contentThemes = exports.sizeNumber = exports.dividerEnum = exports.fileLinkTypes = exports.videoControlsTypes = exports.playIconThemes = exports.playIconTypes = exports.videoTypes = exports.contentTextWidth = exports.contentSizes = exports.sliderSizesArray = exports.containerSizesArray = exports.textSize = exports.mediaDirection = void 0;
3
+ exports.CardBase = exports.BorderProps = exports.MapProps = exports.YMapMarker = exports.YMapMarkerLabel = exports.MediaProps = exports.ButtonBlock = exports.TitleProps = exports.BlockBaseProps = exports.AnchorProps = exports.withTheme = exports.MenuProps = exports.ButtonProps = exports.authorItem = exports.FileLinkProps = exports.LinkProps = exports.BackgroundProps = exports.DataLensProps = exports.DataLensObjectProps = exports.JustifyProps = exports.ThemeProps = exports.VideoProps = exports.CustomControlsOptionsProps = exports.PlayButtonProps = exports.LoopProps = exports.ChildrenCardsProps = exports.ChildrenProps = exports.AnimatableProps = exports.sliderSizesObject = exports.containerSizesObject = exports.CardLayoutProps = exports.BaseProps = exports.customControlsButtonPositioning = exports.customControlsType = exports.mediaView = exports.quoteTypes = exports.contentThemes = exports.sizeNumber = exports.dividerEnum = exports.fileLinkTypes = exports.videoControlsTypes = exports.playIconThemes = exports.playIconTypes = exports.videoTypes = exports.contentTextWidth = exports.contentSizes = exports.sliderSizesArray = exports.containerSizesArray = exports.textSize = exports.mediaDirection = void 0;
4
+ exports.BlockHeaderProps = void 0;
4
5
  const schema_1 = require("../../components/Image/schema");
5
6
  const models_1 = require("../../models");
6
7
  const event_1 = require("./event");
@@ -35,6 +36,12 @@ exports.BaseProps = {
35
36
  type: 'string',
36
37
  },
37
38
  };
39
+ exports.CardLayoutProps = {
40
+ controlPosition: {
41
+ type: 'string',
42
+ enum: ['content', 'footer'],
43
+ },
44
+ };
38
45
  exports.containerSizesObject = {
39
46
  type: 'object',
40
47
  additionalProperties: false,
@@ -26,6 +26,9 @@ unpredictable css rules order in build */
26
26
  cursor: default;
27
27
  border: none;
28
28
  }
29
+ .pc-background-card__content {
30
+ display: flex;
31
+ }
29
32
  .pc-background-card__image {
30
33
  position: absolute;
31
34
  top: 0;
@@ -37,12 +40,6 @@ unpredictable css rules order in build */
37
40
  object-fit: cover;
38
41
  object-position: left;
39
42
  }
40
- .pc-background-card__footer {
41
- margin-top: 0px;
42
- }
43
- .pc-background-card__links, .pc-background-card__buttons {
44
- margin-top: 16px;
45
- }
46
43
 
47
44
  a.pc-background-card_theme_light {
48
45
  background-color: var(--pc-color-base-silver);
@@ -15,12 +15,9 @@ const BackgroundCard = (props) => {
15
15
  const hasBackgroundColor = backgroundColor || cardTheme !== 'default';
16
16
  const borderType = hasBackgroundColor ? 'none' : border;
17
17
  const areControlsInFooter = !paddingBottom && controlPosition === 'footer';
18
- return (react_1.default.createElement(components_1.CardBase, { className: b({ padding: paddingBottom, theme: cardTheme }), url: url, border: borderType, analyticsEvents: analyticsEvents, urlTitle: urlTitle },
18
+ return (react_1.default.createElement(components_1.CardBase, { className: b({ padding: paddingBottom, theme: cardTheme }), contentClassName: b('content'), url: url, border: borderType, analyticsEvents: analyticsEvents, urlTitle: urlTitle },
19
19
  react_1.default.createElement(components_1.CardBase.Content, null,
20
20
  react_1.default.createElement(components_1.BackgroundImage, Object.assign({ className: b('image') }, (0, utils_1.getThemedValue)(background, theme), { style: { backgroundColor } })),
21
- react_1.default.createElement(Content_1.default, { titleId: titleId, title: title, text: text, additionalInfo: additionalInfo, size: "s", theme: cardTheme, links: areControlsInFooter ? undefined : links, buttons: areControlsInFooter ? undefined : buttons, list: list, colSizes: { all: 12, md: 12 } })),
22
- areControlsInFooter && (links || buttons) && (react_1.default.createElement(components_1.CardBase.Footer, null,
23
- react_1.default.createElement(components_1.Links, { className: b('links'), size: "s", links: links, titleId: titleId }),
24
- react_1.default.createElement(components_1.Buttons, { className: b('buttons'), size: "s", buttons: buttons, titleId: titleId })))));
21
+ react_1.default.createElement(Content_1.default, { titleId: titleId, title: title, text: text, additionalInfo: additionalInfo, size: "s", theme: cardTheme, links: links, buttons: buttons, list: list, colSizes: { all: 12, md: 12 }, controlPosition: areControlsInFooter ? 'bottom' : 'default' }))));
25
22
  };
26
23
  exports.default = BackgroundCard;
@@ -7,12 +7,12 @@ const schema_1 = require("../../components/Image/schema");
7
7
  const common_1 = require("../../schema/validators/common");
8
8
  const event_1 = require("../../schema/validators/event");
9
9
  const schema_2 = require("../Content/schema");
10
- const BackgroundCardContentProps = (0, omit_1.default)(schema_2.ContentBase, ['size']);
10
+ const BackgroundCardContentProps = (0, omit_1.default)(schema_2.ContentBase, ['size', 'controlPosition']);
11
11
  exports.BackgroundCard = {
12
12
  'background-card': {
13
13
  additionalProperties: false,
14
14
  required: ['title', 'text'],
15
- properties: Object.assign(Object.assign(Object.assign(Object.assign({}, common_1.BaseProps), common_1.CardBase), BackgroundCardContentProps), { url: {
15
+ properties: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, common_1.BaseProps), common_1.CardBase), common_1.CardLayoutProps), BackgroundCardContentProps), { url: {
16
16
  type: 'string',
17
17
  }, urlTitle: {
18
18
  type: 'string',
@@ -4,9 +4,9 @@ unpredictable css rules order in build */
4
4
  min-height: auto;
5
5
  }
6
6
 
7
- .pc-basic-card__footer {
8
- margin-top: 0px;
7
+ .pc-basic-card__content {
8
+ display: flex;
9
9
  }
10
- .pc-basic-card__links, .pc-basic-card__buttons {
11
- margin-top: 16px;
10
+ .pc-basic-card__wrapper {
11
+ flex: auto;
12
12
  }