@gravity-ui/page-constructor 5.14.4-alpha.1 → 5.14.4-alpha.3

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 (154) hide show
  1. package/build/cjs/blocks/Banner/index.js +1 -0
  2. package/build/cjs/blocks/CardLayout/index.js +21 -3
  3. package/build/cjs/blocks/Companies/index.js +1 -0
  4. package/build/cjs/blocks/ContentLayout/index.d.ts +31 -1
  5. package/build/cjs/blocks/ContentLayout/index.js +64 -1
  6. package/build/cjs/blocks/ExtendedFeatures/index.d.ts +48 -2
  7. package/build/cjs/blocks/ExtendedFeatures/index.js +60 -2
  8. package/build/cjs/blocks/FilterBlock/index.d.ts +18 -0
  9. package/build/cjs/blocks/FilterBlock/index.js +81 -1
  10. package/build/cjs/blocks/Form/index.d.ts +1 -0
  11. package/build/cjs/blocks/Form/index.js +1 -0
  12. package/build/cjs/blocks/Header/index.d.ts +11 -0
  13. package/build/cjs/blocks/Header/index.js +18 -0
  14. package/build/cjs/blocks/HeaderSlider/index.d.ts +1 -0
  15. package/build/cjs/blocks/HeaderSlider/index.js +1 -0
  16. package/build/cjs/blocks/Icons/Icons.js +2 -2
  17. package/build/cjs/blocks/Icons/index.d.ts +7 -0
  18. package/build/cjs/blocks/Icons/index.js +44 -0
  19. package/build/cjs/blocks/Info/index.d.ts +1 -0
  20. package/build/cjs/blocks/Info/index.js +1 -0
  21. package/build/cjs/blocks/Map/index.d.ts +1 -0
  22. package/build/cjs/blocks/Map/index.js +1 -0
  23. package/build/cjs/blocks/Media/index.d.ts +26 -2
  24. package/build/cjs/blocks/Media/index.js +39 -4
  25. package/build/cjs/blocks/PromoFeaturesBlock/index.d.ts +11 -1
  26. package/build/cjs/blocks/PromoFeaturesBlock/index.js +31 -1
  27. package/build/cjs/blocks/Questions/index.d.ts +1 -0
  28. package/build/cjs/blocks/Questions/index.js +1 -0
  29. package/build/cjs/blocks/Share/index.d.ts +1 -0
  30. package/build/cjs/blocks/Share/index.js +1 -0
  31. package/build/cjs/blocks/Slider/index.d.ts +19 -0
  32. package/build/cjs/blocks/Slider/index.js +31 -0
  33. package/build/cjs/blocks/Table/index.d.ts +10 -0
  34. package/build/cjs/blocks/Table/index.js +17 -0
  35. package/build/cjs/blocks/Tabs/index.d.ts +1 -0
  36. package/build/cjs/blocks/Tabs/index.js +1 -0
  37. package/build/cjs/common/types/forms.d.ts +1 -0
  38. package/build/cjs/constructor-items.d.ts +2 -6
  39. package/build/cjs/constructor-items.js +2 -2
  40. package/build/cjs/editor-v2/components/BigOverlay/BigOverlay.js +6 -3
  41. package/build/cjs/editor-v2/components/BlocksList/BlocksList.css +27 -1
  42. package/build/cjs/editor-v2/components/BlocksList/BlocksList.js +34 -2
  43. package/build/cjs/editor-v2/components/MiddleScreen/MiddleScreen.css +5 -3
  44. package/build/cjs/editor-v2/components/MiddleScreen/MiddleScreen.js +16 -11
  45. package/build/cjs/editor-v2/components/Panels/Panels.css +36 -0
  46. package/build/cjs/editor-v2/components/Panels/Panels.d.ts +8 -0
  47. package/build/cjs/editor-v2/components/Panels/Panels.js +41 -0
  48. package/build/cjs/editor-v2/components/SourceCode/SourceCode.css +18 -6
  49. package/build/cjs/editor-v2/components/SourceCode/SourceCode.js +26 -5
  50. package/build/cjs/editor-v2/components/TopBar/TopBar.d.ts +4 -0
  51. package/build/cjs/editor-v2/components/TopBar/TopBar.js +2 -2
  52. package/build/cjs/editor-v2/components/Tree/Tree.css +11 -0
  53. package/build/cjs/editor-v2/components/Tree/Tree.js +10 -2
  54. package/build/cjs/editor-v2/components/ViewSwitches/ViewSwitches.css +7 -0
  55. package/build/cjs/editor-v2/components/ViewSwitches/ViewSwitches.d.ts +4 -2
  56. package/build/cjs/editor-v2/components/ViewSwitches/ViewSwitches.js +11 -14
  57. package/build/cjs/editor-v2/constants.d.ts +1 -0
  58. package/build/cjs/editor-v2/constants.js +4 -0
  59. package/build/cjs/editor-v2/containers/Editor/Editor.css +0 -10
  60. package/build/cjs/editor-v2/containers/Editor/Editor.js +2 -13
  61. package/build/cjs/editor-v2/context/contentConfig/store.d.ts +1 -0
  62. package/build/cjs/editor-v2/context/contentConfig/store.js +3 -0
  63. package/build/cjs/editor-v2/context/iframeContext/store.d.ts +4 -0
  64. package/build/cjs/editor-v2/context/iframeContext/store.js +27 -1
  65. package/build/cjs/sub-blocks/BackgroundCard/index.js +2 -0
  66. package/build/cjs/sub-blocks/BannerCard/index.js +1 -0
  67. package/build/cjs/sub-blocks/BasicCard/index.js +1 -0
  68. package/build/cjs/sub-blocks/Content/index.js +1 -0
  69. package/build/cjs/sub-blocks/ImageCard/index.js +1 -0
  70. package/build/cjs/sub-blocks/LayoutItem/index.js +7 -2
  71. package/build/cjs/sub-blocks/MediaCard/index.js +2 -0
  72. package/build/cjs/sub-blocks/PriceCard/index.js +1 -0
  73. package/build/cjs/sub-blocks/PriceDetailed/index.js +1 -0
  74. package/build/cjs/sub-blocks/Quote/index.js +1 -0
  75. package/build/esm/blocks/Banner/index.js +1 -0
  76. package/build/esm/blocks/CardLayout/index.js +21 -3
  77. package/build/esm/blocks/Companies/index.js +1 -0
  78. package/build/esm/blocks/ContentLayout/index.d.ts +31 -1
  79. package/build/esm/blocks/ContentLayout/index.js +64 -1
  80. package/build/esm/blocks/ExtendedFeatures/index.d.ts +48 -2
  81. package/build/esm/blocks/ExtendedFeatures/index.js +60 -2
  82. package/build/esm/blocks/FilterBlock/index.d.ts +18 -0
  83. package/build/esm/blocks/FilterBlock/index.js +81 -1
  84. package/build/esm/blocks/Form/index.d.ts +1 -0
  85. package/build/esm/blocks/Form/index.js +1 -0
  86. package/build/esm/blocks/Header/index.d.ts +11 -0
  87. package/build/esm/blocks/Header/index.js +18 -0
  88. package/build/esm/blocks/HeaderSlider/index.d.ts +1 -0
  89. package/build/esm/blocks/HeaderSlider/index.js +1 -0
  90. package/build/esm/blocks/Icons/Icons.js +2 -2
  91. package/build/esm/blocks/Icons/index.d.ts +7 -0
  92. package/build/esm/blocks/Icons/index.js +44 -0
  93. package/build/esm/blocks/Info/index.d.ts +1 -0
  94. package/build/esm/blocks/Info/index.js +1 -0
  95. package/build/esm/blocks/Map/index.d.ts +1 -0
  96. package/build/esm/blocks/Map/index.js +1 -0
  97. package/build/esm/blocks/Media/index.d.ts +26 -2
  98. package/build/esm/blocks/Media/index.js +39 -4
  99. package/build/esm/blocks/PromoFeaturesBlock/index.d.ts +11 -1
  100. package/build/esm/blocks/PromoFeaturesBlock/index.js +31 -1
  101. package/build/esm/blocks/Questions/index.d.ts +1 -0
  102. package/build/esm/blocks/Questions/index.js +1 -0
  103. package/build/esm/blocks/Share/index.d.ts +1 -0
  104. package/build/esm/blocks/Share/index.js +1 -0
  105. package/build/esm/blocks/Slider/index.d.ts +19 -0
  106. package/build/esm/blocks/Slider/index.js +31 -0
  107. package/build/esm/blocks/Table/index.d.ts +10 -0
  108. package/build/esm/blocks/Table/index.js +17 -0
  109. package/build/esm/blocks/Tabs/index.d.ts +1 -0
  110. package/build/esm/blocks/Tabs/index.js +1 -0
  111. package/build/esm/common/types/forms.d.ts +1 -0
  112. package/build/esm/constructor-items.d.ts +2 -6
  113. package/build/esm/constructor-items.js +1 -1
  114. package/build/esm/editor-v2/components/BigOverlay/BigOverlay.js +7 -4
  115. package/build/esm/editor-v2/components/BlocksList/BlocksList.css +27 -1
  116. package/build/esm/editor-v2/components/BlocksList/BlocksList.js +35 -3
  117. package/build/esm/editor-v2/components/MiddleScreen/MiddleScreen.css +5 -3
  118. package/build/esm/editor-v2/components/MiddleScreen/MiddleScreen.js +16 -11
  119. package/build/esm/editor-v2/components/Panels/Panels.css +36 -0
  120. package/build/esm/editor-v2/components/Panels/Panels.d.ts +9 -0
  121. package/build/esm/editor-v2/components/Panels/Panels.js +37 -0
  122. package/build/esm/editor-v2/components/SourceCode/SourceCode.css +18 -6
  123. package/build/esm/editor-v2/components/SourceCode/SourceCode.js +27 -6
  124. package/build/esm/editor-v2/components/TopBar/TopBar.d.ts +4 -0
  125. package/build/esm/editor-v2/components/TopBar/TopBar.js +2 -2
  126. package/build/esm/editor-v2/components/Tree/Tree.css +11 -0
  127. package/build/esm/editor-v2/components/Tree/Tree.js +11 -3
  128. package/build/esm/editor-v2/components/ViewSwitches/ViewSwitches.css +7 -0
  129. package/build/esm/editor-v2/components/ViewSwitches/ViewSwitches.d.ts +4 -2
  130. package/build/esm/editor-v2/components/ViewSwitches/ViewSwitches.js +13 -15
  131. package/build/esm/editor-v2/constants.d.ts +1 -0
  132. package/build/esm/editor-v2/constants.js +1 -0
  133. package/build/esm/editor-v2/containers/Editor/Editor.css +0 -10
  134. package/build/esm/editor-v2/containers/Editor/Editor.js +2 -13
  135. package/build/esm/editor-v2/context/contentConfig/store.d.ts +1 -0
  136. package/build/esm/editor-v2/context/contentConfig/store.js +3 -0
  137. package/build/esm/editor-v2/context/iframeContext/store.d.ts +4 -0
  138. package/build/esm/editor-v2/context/iframeContext/store.js +27 -1
  139. package/build/esm/sub-blocks/BackgroundCard/index.js +2 -0
  140. package/build/esm/sub-blocks/BannerCard/index.js +1 -0
  141. package/build/esm/sub-blocks/BasicCard/index.js +1 -0
  142. package/build/esm/sub-blocks/Content/index.js +1 -0
  143. package/build/esm/sub-blocks/ImageCard/index.js +1 -0
  144. package/build/esm/sub-blocks/LayoutItem/index.js +7 -2
  145. package/build/esm/sub-blocks/MediaCard/index.js +2 -0
  146. package/build/esm/sub-blocks/PriceCard/index.js +1 -0
  147. package/build/esm/sub-blocks/PriceDetailed/index.js +1 -0
  148. package/build/esm/sub-blocks/Quote/index.js +1 -0
  149. package/package.json +1 -1
  150. package/widget/index.js +1 -1
  151. package/build/cjs/sub-blocks/LayoutItem/form.d.ts +0 -8
  152. package/build/cjs/sub-blocks/LayoutItem/form.js +0 -14
  153. package/build/esm/sub-blocks/LayoutItem/form.d.ts +0 -8
  154. package/build/esm/sub-blocks/LayoutItem/form.js +0 -11
@@ -4,10 +4,10 @@ import Source from '../Source/Source';
4
4
  import ViewSwitches from '../ViewSwitches/ViewSwitches';
5
5
  import './TopBar.css';
6
6
  const b = block('topbar');
7
- const TopBar = ({ className }) => {
7
+ const TopBar = ({ zoom, onDecreaseZoom, onIncreaseZoom, onZoomUpdate, className, }) => {
8
8
  return (React.createElement("div", { className: b(null, className) },
9
9
  React.createElement("div", { className: b('switches') },
10
- React.createElement(ViewSwitches, null)),
10
+ React.createElement(ViewSwitches, { onZoomUpdate: onZoomUpdate, onDecreaseZoom: onDecreaseZoom, onIncreaseZoom: onIncreaseZoom, zoom: zoom })),
11
11
  React.createElement(Source, { className: b('source') })));
12
12
  };
13
13
  export default TopBar;
@@ -13,6 +13,17 @@ body {
13
13
  .pc-tree {
14
14
  padding: 12px;
15
15
  }
16
+ .pc-tree__head {
17
+ margin-bottom: 10px;
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: space-between;
21
+ }
22
+ .pc-tree__title {
23
+ font-size: var(--g-text-subheader-3-font-size);
24
+ line-height: var(--g-text-subheader-3-line-height);
25
+ font-weight: var(--g-text-subheader-font-weight);
26
+ }
16
27
  .pc-tree__item {
17
28
  padding: 8px;
18
29
  margin-bottom: 8px;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { Card } from '@gravity-ui/uikit';
2
+ import { TrashBin } from '@gravity-ui/icons';
3
+ import { Button, Card, Icon } from '@gravity-ui/uikit';
3
4
  import { block } from '../../../utils';
4
5
  import { useContentConfigStore } from '../../context/contentConfig';
5
6
  import './Tree.css';
@@ -18,13 +19,20 @@ const generateTree = (items) => {
18
19
  });
19
20
  };
20
21
  const Tree = (_p) => {
21
- const { config } = useContentConfigStore();
22
+ const { config, resetBlocks } = useContentConfigStore();
22
23
  const blockTree = generateTree(config.blocks);
23
24
  const renderTree = (items, deepLevel = 0) => {
24
25
  return items.map(({ type, children }, index) => (React.createElement(React.Fragment, { key: index },
25
26
  React.createElement(Card, { className: b('item', { deep: deepLevel }) }, type),
26
27
  children && renderTree(children, deepLevel + 1))));
27
28
  };
28
- return React.createElement("div", { className: b() }, renderTree(blockTree));
29
+ return (React.createElement("div", { className: b() },
30
+ React.createElement("div", { className: b('head') },
31
+ React.createElement("div", { className: b('title') }, "Tree"),
32
+ React.createElement("div", { className: b('actions') },
33
+ React.createElement(Button, { view: "outlined-danger", onClick: () => resetBlocks() },
34
+ React.createElement(Icon, { data: TrashBin }),
35
+ "Clear all"))),
36
+ React.createElement("div", { className: b('cards') }, renderTree(blockTree))));
29
37
  };
30
38
  export default Tree;
@@ -13,4 +13,11 @@ body {
13
13
  .pc-view-switches {
14
14
  display: inline-flex;
15
15
  gap: 12px;
16
+ }
17
+ .pc-view-switches__zoom {
18
+ display: flex;
19
+ gap: 4px;
20
+ }
21
+ .pc-view-switches__zoom-input {
22
+ width: 40px;
16
23
  }
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
- import { RadioButtonOption } from '@gravity-ui/uikit';
3
2
  import { ClassNameProps } from '../../../models';
4
3
  import './ViewSwitches.css';
5
4
  interface ViewSwitchesProps extends ClassNameProps {
5
+ onZoomUpdate: (zoom: number) => void;
6
+ onDecreaseZoom: () => void;
7
+ onIncreaseZoom: () => void;
8
+ zoom: number;
6
9
  }
7
- export declare const options2: RadioButtonOption[];
8
10
  declare const ViewSwitches: React.FC<ViewSwitchesProps>;
9
11
  export default ViewSwitches;
@@ -1,22 +1,20 @@
1
1
  import React from 'react';
2
- import { Display, Eye, Smartphone, Square, SquareDashedText } from '@gravity-ui/icons';
3
- import { Icon, RadioButton } from '@gravity-ui/uikit';
2
+ import { Minus, Plus } from '@gravity-ui/icons';
3
+ import { Button, Icon, Select } from '@gravity-ui/uikit';
4
4
  import { block } from '../../../utils';
5
+ import { ZOOM_STEPS } from '../../constants';
5
6
  import './ViewSwitches.css';
6
7
  const b = block('view-switches');
7
- const options1 = [
8
- { value: 'edit-mode', content: React.createElement(Icon, { data: SquareDashedText }) },
9
- { value: 'preview-mode', content: React.createElement(Icon, { data: Eye }) },
10
- ];
11
- export const options2 = [
12
- { value: 'desktop-mode', content: React.createElement(Icon, { data: Display }) },
13
- { value: 'tablet-mode', content: React.createElement(Icon, { data: Square }) },
14
- { value: 'phone-mode', content: React.createElement(Icon, { data: Smartphone }) },
15
- ];
16
- // TODO: To be done
17
- const ViewSwitches = ({ className }) => {
8
+ const ViewSwitches = ({ zoom, onIncreaseZoom, onDecreaseZoom, onZoomUpdate, className, }) => {
18
9
  return (React.createElement("div", { className: b(null, className) },
19
- React.createElement(RadioButton, { className: b('switch'), name: "group1", defaultValue: options1[0].value, options: options1, size: "m", disabled: true }),
20
- React.createElement(RadioButton, { className: b('switch'), name: "group2", defaultValue: options2[0].value, options: options2, size: "m", disabled: true })));
10
+ React.createElement("div", { className: b('zoom') },
11
+ React.createElement(Button, { view: 'flat', onClick: onDecreaseZoom },
12
+ React.createElement(Icon, { data: Minus })),
13
+ React.createElement(Select, { multiple: false, value: [String(zoom)], options: ZOOM_STEPS.map((step) => ({
14
+ value: String(step),
15
+ content: `${String(step)}%`,
16
+ })), onUpdate: (value) => onZoomUpdate(Number(value)) }),
17
+ React.createElement(Button, { view: 'flat', onClick: onIncreaseZoom },
18
+ React.createElement(Icon, { data: Plus })))));
21
19
  };
22
20
  export default ViewSwitches;
@@ -0,0 +1 @@
1
+ export declare const ZOOM_STEPS: number[];
@@ -0,0 +1 @@
1
+ export const ZOOM_STEPS = [25, 33, 50, 75, 100, 125, 150, 200, 250, 300];
@@ -36,16 +36,6 @@ body {
36
36
  .pc-editor__canvas {
37
37
  flex: 1;
38
38
  }
39
- .pc-editor__draggable {
40
- width: 12px;
41
- height: 100%;
42
- cursor: col-resize;
43
- background-color: var(--g-color-line-generic);
44
- display: flex;
45
- align-items: center;
46
- justify-content: center;
47
- color: var(--g-color-base-background);
48
- }
49
39
  .pc-editor__overlay {
50
40
  position: absolute;
51
41
  height: 100%;
@@ -1,10 +1,9 @@
1
1
  import React, { useCallback } from 'react';
2
- import { Grip } from '@gravity-ui/icons';
3
- import { Panel, PanelGroup, PanelResizeHandle } from 'react-resizable-panels';
4
2
  import { ActionTypes } from '../../../common/types';
5
3
  import { block } from '../../../utils';
6
4
  import BigOverlay from '../../components/BigOverlay/BigOverlay';
7
5
  import MiddleScreen from '../../components/MiddleScreen/MiddleScreen';
6
+ import { Panels } from '../../components/Panels/Panels';
8
7
  import { Sidebar } from '../../components/Sidebar/Sidebar';
9
8
  import { ContentConfigProvider } from '../../context/contentConfig';
10
9
  import { EditorProvider, useEditorStore } from '../../context/editorContext';
@@ -40,17 +39,7 @@ const EditorView = (_props) => {
40
39
  }, [manipulateOverlayMode, sendMessage]);
41
40
  return (React.createElement("div", { className: b(), onMouseUp: onMouseUp, onMouseMove: onMouseMove },
42
41
  React.createElement("div", { className: b('body') },
43
- React.createElement(PanelGroup, { className: b('panel'), autoSaveId: "page-constructor-editor", direction: "horizontal" },
44
- React.createElement(Panel, { collapsible: true, defaultSize: 25, minSize: 15 },
45
- React.createElement(Sidebar, { position: 'left' })),
46
- React.createElement(PanelResizeHandle, { className: b('draggable') },
47
- React.createElement(Grip, { className: b('grip') })),
48
- React.createElement(Panel, { minSize: 20 },
49
- React.createElement(MiddleScreen, null)),
50
- React.createElement(PanelResizeHandle, { className: b('draggable') },
51
- React.createElement(Grip, { className: b('grip') })),
52
- React.createElement(Panel, { collapsible: true, minSize: 15, defaultSize: 25 },
53
- React.createElement(Sidebar, { position: 'right', startMenu: "block-config" })))),
42
+ React.createElement(Panels, { left: React.createElement(Sidebar, { position: 'left' }), right: React.createElement(Sidebar, { position: 'right', startMenu: "block-config" }), middle: React.createElement(MiddleScreen, null) })),
54
43
  React.createElement(BigOverlay, { className: b('overlay') })));
55
44
  };
56
45
  export const Editor = (props) => {
@@ -18,6 +18,7 @@ export interface ContentConfigMethods extends WithStoreReducer {
18
18
  duplicateBlock: (path: number[]) => void;
19
19
  reorderBlock: (path: number[], destination: number[]) => void;
20
20
  updateField: (path: string, value: DynamicFormValue) => void;
21
+ resetBlocks: () => void;
21
22
  }
22
23
  export type ContentConfigStore = ContentConfigState & ContentConfigMethods;
23
24
  export declare const createContentConfigStore: (overrideInitialState?: Partial<ContentConfigState> | undefined) => import("zustand").UseBoundStore<Omit<Omit<import("zustand").StoreApi<ContentConfigState & ContentConfigMethods>, "subscribe"> & {
@@ -57,6 +57,9 @@ export const createContentConfigStore = initializeStore({
57
57
  }
58
58
  set((state) => (Object.assign(Object.assign({}, state), { config: Object.assign(Object.assign({}, state.config), { blocks: newBlocksConfig }) })));
59
59
  },
60
+ resetBlocks: () => {
61
+ set((state) => (Object.assign(Object.assign({}, state), { config: Object.assign(Object.assign({}, state.config), { blocks: [] }) })));
62
+ },
60
63
  reducer: function (action) {
61
64
  switch (action.type) {
62
65
  // Insert Actions
@@ -2,9 +2,13 @@ import { WithStoreReducer } from '../../../common/types';
2
2
  export interface IframeState {
3
3
  url: string;
4
4
  height?: number;
5
+ zoom: number;
5
6
  }
6
7
  export interface IframeMethods extends WithStoreReducer {
7
8
  setUrl: (url: string) => void;
9
+ setZoom: (zoom: number) => void;
10
+ increaseZoom: () => void;
11
+ decreaseZoom: () => void;
8
12
  }
9
13
  export type IframeStore = IframeState & IframeMethods;
10
14
  export declare const createIframeStore: (overrideInitialState?: Partial<IframeState> | undefined) => import("zustand").UseBoundStore<Omit<Omit<import("zustand").StoreApi<IframeState & IframeMethods>, "subscribe"> & {
@@ -1,9 +1,35 @@
1
1
  import { ActionTypes } from '../../../common/types';
2
+ import { ZOOM_STEPS } from '../../constants';
2
3
  import { initializeStore } from '../../utils/store';
3
4
  export const createIframeStore = initializeStore({
4
5
  url: '',
5
6
  height: 400,
6
- }, (set) => ({
7
+ zoom: 100,
8
+ }, (set, get) => ({
9
+ setZoom: function (zoom) {
10
+ if (zoom > 0) {
11
+ set((state) => (Object.assign(Object.assign({}, state), { zoom })));
12
+ }
13
+ },
14
+ increaseZoom: function () {
15
+ const currentZoom = get().zoom;
16
+ for (const step of ZOOM_STEPS) {
17
+ if (currentZoom < step) {
18
+ get().setZoom(step);
19
+ break;
20
+ }
21
+ }
22
+ },
23
+ decreaseZoom: function () {
24
+ const currentZoom = get().zoom;
25
+ const reverseSteps = ZOOM_STEPS.slice().reverse();
26
+ for (const step of reverseSteps) {
27
+ if (currentZoom > step) {
28
+ get().setZoom(step);
29
+ break;
30
+ }
31
+ }
32
+ },
7
33
  setUrl: (url) => set((state) => (Object.assign(Object.assign({}, state), { url }))),
8
34
  reducer: (action) => {
9
35
  switch (action.type) {
@@ -6,10 +6,12 @@ const BackgroundCardConfig = {
6
6
  schema: {
7
7
  name: 'Background Card',
8
8
  inputs: generateFromAJV(BackgroundCardSchema['background-card']),
9
+ group: 'cards',
9
10
  default: {
10
11
  title: 'Background Card',
11
12
  text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
12
13
  additionalInfo: 'Additional info',
14
+ backgroundColor: '#F0F0F0',
13
15
  },
14
16
  },
15
17
  };
@@ -5,6 +5,7 @@ const BannerCardConfig = {
5
5
  component: BannerCard,
6
6
  schema: {
7
7
  name: 'Banner Card',
8
+ group: 'cards',
8
9
  inputs: generateFromAJV(BannerCardProps),
9
10
  default: {
10
11
  color: 'rgba(54, 151, 241, 0.4)',
@@ -5,6 +5,7 @@ const BasicCardConfig = {
5
5
  component: BasicCard,
6
6
  schema: {
7
7
  name: 'Basic Card',
8
+ group: 'cards',
8
9
  inputs: generateFromAJV(BasicCardSchema['basic-card']),
9
10
  default: {
10
11
  title: 'Basic Card',
@@ -5,6 +5,7 @@ const ContentConfig = {
5
5
  component: Content,
6
6
  schema: {
7
7
  name: 'Content',
8
+ group: 'cards',
8
9
  inputs: generateFromAJV(ContentBlock['content']),
9
10
  default: {
10
11
  title: 'Content',
@@ -5,6 +5,7 @@ const ImageCardConfig = {
5
5
  component: ImageCard,
6
6
  schema: {
7
7
  name: 'Image Card',
8
+ group: 'cards',
8
9
  inputs: generateFromAJV(ImageCardSchema['image-card']),
9
10
  default: {
10
11
  title: 'Image Card',
@@ -5,11 +5,16 @@ const LayoutItemConfig = {
5
5
  component: LayoutItem,
6
6
  schema: {
7
7
  name: 'Layout Item',
8
+ group: 'cards',
8
9
  inputs: generateFromAJV(LayoutItemSchema),
9
10
  default: {
11
+ type: 'layout-item',
10
12
  content: {
11
- title: 'Layout Item',
12
- text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
13
+ title: 'Lorem ipsum',
14
+ text: 'Dolor sit amet',
15
+ },
16
+ media: {
17
+ image: 'https://storage.yandexcloud.net/yc-www-community-images/event_ecaf1ef1-bc3a-40fa-adef-827b0959e6c3.jpg',
13
18
  },
14
19
  },
15
20
  },
@@ -5,12 +5,14 @@ const MediaCardConfig = {
5
5
  component: MediaCard,
6
6
  schema: {
7
7
  name: 'Media Card',
8
+ group: 'cards',
8
9
  inputs: generateFromAJV(MediaCardSchema['media-card']),
9
10
  default: {
10
11
  content: {
11
12
  title: 'Media Card',
12
13
  text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
13
14
  },
15
+ image: 'https://storage.yandexcloud.net/yc-www-community-images/event_ecaf1ef1-bc3a-40fa-adef-827b0959e6c3.jpg',
14
16
  },
15
17
  },
16
18
  };
@@ -5,6 +5,7 @@ const PriceCardConfig = {
5
5
  component: PriceCard,
6
6
  schema: {
7
7
  name: 'Price Card',
8
+ group: 'cards',
8
9
  inputs: generateFromAJV(PriceCardSchema['price-card']),
9
10
  default: {
10
11
  type: 'price-card',
@@ -6,6 +6,7 @@ const PriceDetailedConfig = {
6
6
  component: PriceDetailed,
7
7
  schema: {
8
8
  name: 'Price Detailed',
9
+ group: 'cards',
9
10
  inputs: generateFromAJV(PriceDetailedSchema['price-detailed']),
10
11
  default: {
11
12
  priceType: 'marked-list',
@@ -5,6 +5,7 @@ const QuoteConfig = {
5
5
  component: Quote,
6
6
  schema: {
7
7
  name: 'Quote',
8
+ group: 'cards',
8
9
  inputs: generateFromAJV(QuoteSchema['quote']),
9
10
  default: {
10
11
  text: 'A good decision is based on knowledge and not on numbers.',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/page-constructor",
3
- "version": "5.14.4-alpha.1",
3
+ "version": "5.14.4-alpha.3",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {