@gravity-ui/page-constructor 5.14.4-alpha.2 → 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.
- package/build/cjs/blocks/Banner/index.js +1 -0
- package/build/cjs/blocks/CardLayout/index.js +21 -3
- package/build/cjs/blocks/Companies/index.js +1 -0
- package/build/cjs/blocks/ContentLayout/index.d.ts +31 -1
- package/build/cjs/blocks/ContentLayout/index.js +64 -1
- package/build/cjs/blocks/ExtendedFeatures/index.d.ts +48 -2
- package/build/cjs/blocks/ExtendedFeatures/index.js +60 -2
- package/build/cjs/blocks/FilterBlock/index.d.ts +18 -0
- package/build/cjs/blocks/FilterBlock/index.js +81 -1
- package/build/cjs/blocks/Form/index.d.ts +1 -0
- package/build/cjs/blocks/Form/index.js +1 -0
- package/build/cjs/blocks/Header/index.d.ts +11 -0
- package/build/cjs/blocks/Header/index.js +18 -0
- package/build/cjs/blocks/HeaderSlider/index.d.ts +1 -0
- package/build/cjs/blocks/HeaderSlider/index.js +1 -0
- package/build/cjs/blocks/Icons/Icons.js +2 -2
- package/build/cjs/blocks/Icons/index.d.ts +7 -0
- package/build/cjs/blocks/Icons/index.js +44 -0
- package/build/cjs/blocks/Info/index.d.ts +1 -0
- package/build/cjs/blocks/Info/index.js +1 -0
- package/build/cjs/blocks/Map/index.d.ts +1 -0
- package/build/cjs/blocks/Map/index.js +1 -0
- package/build/cjs/blocks/Media/index.d.ts +26 -2
- package/build/cjs/blocks/Media/index.js +39 -4
- package/build/cjs/blocks/PromoFeaturesBlock/index.d.ts +11 -1
- package/build/cjs/blocks/PromoFeaturesBlock/index.js +31 -1
- package/build/cjs/blocks/Questions/index.d.ts +1 -0
- package/build/cjs/blocks/Questions/index.js +1 -0
- package/build/cjs/blocks/Share/index.d.ts +1 -0
- package/build/cjs/blocks/Share/index.js +1 -0
- package/build/cjs/blocks/Slider/index.d.ts +19 -0
- package/build/cjs/blocks/Slider/index.js +31 -0
- package/build/cjs/blocks/Table/index.d.ts +10 -0
- package/build/cjs/blocks/Table/index.js +17 -0
- package/build/cjs/blocks/Tabs/index.d.ts +1 -0
- package/build/cjs/blocks/Tabs/index.js +1 -0
- package/build/cjs/common/types/forms.d.ts +1 -0
- package/build/cjs/constructor-items.d.ts +2 -6
- package/build/cjs/constructor-items.js +2 -2
- package/build/cjs/editor-v2/components/BlocksList/BlocksList.css +27 -1
- package/build/cjs/editor-v2/components/BlocksList/BlocksList.js +34 -2
- package/build/cjs/editor-v2/components/Panels/Panels.css +36 -0
- package/build/cjs/editor-v2/components/Panels/Panels.d.ts +8 -0
- package/build/cjs/editor-v2/components/Panels/Panels.js +41 -0
- package/build/cjs/editor-v2/components/Tree/Tree.css +11 -0
- package/build/cjs/editor-v2/components/Tree/Tree.js +10 -2
- package/build/cjs/editor-v2/containers/Editor/Editor.css +0 -10
- package/build/cjs/editor-v2/containers/Editor/Editor.js +2 -13
- package/build/cjs/editor-v2/context/contentConfig/store.d.ts +1 -0
- package/build/cjs/editor-v2/context/contentConfig/store.js +3 -0
- package/build/cjs/sub-blocks/BackgroundCard/index.js +2 -0
- package/build/cjs/sub-blocks/BannerCard/index.js +1 -0
- package/build/cjs/sub-blocks/BasicCard/index.js +1 -0
- package/build/cjs/sub-blocks/Content/index.js +1 -0
- package/build/cjs/sub-blocks/ImageCard/index.js +1 -0
- package/build/cjs/sub-blocks/LayoutItem/index.js +7 -2
- package/build/cjs/sub-blocks/MediaCard/index.js +2 -0
- package/build/cjs/sub-blocks/PriceCard/index.js +1 -0
- package/build/cjs/sub-blocks/PriceDetailed/index.js +1 -0
- package/build/cjs/sub-blocks/Quote/index.js +1 -0
- package/build/esm/blocks/Banner/index.js +1 -0
- package/build/esm/blocks/CardLayout/index.js +21 -3
- package/build/esm/blocks/Companies/index.js +1 -0
- package/build/esm/blocks/ContentLayout/index.d.ts +31 -1
- package/build/esm/blocks/ContentLayout/index.js +64 -1
- package/build/esm/blocks/ExtendedFeatures/index.d.ts +48 -2
- package/build/esm/blocks/ExtendedFeatures/index.js +60 -2
- package/build/esm/blocks/FilterBlock/index.d.ts +18 -0
- package/build/esm/blocks/FilterBlock/index.js +81 -1
- package/build/esm/blocks/Form/index.d.ts +1 -0
- package/build/esm/blocks/Form/index.js +1 -0
- package/build/esm/blocks/Header/index.d.ts +11 -0
- package/build/esm/blocks/Header/index.js +18 -0
- package/build/esm/blocks/HeaderSlider/index.d.ts +1 -0
- package/build/esm/blocks/HeaderSlider/index.js +1 -0
- package/build/esm/blocks/Icons/Icons.js +2 -2
- package/build/esm/blocks/Icons/index.d.ts +7 -0
- package/build/esm/blocks/Icons/index.js +44 -0
- package/build/esm/blocks/Info/index.d.ts +1 -0
- package/build/esm/blocks/Info/index.js +1 -0
- package/build/esm/blocks/Map/index.d.ts +1 -0
- package/build/esm/blocks/Map/index.js +1 -0
- package/build/esm/blocks/Media/index.d.ts +26 -2
- package/build/esm/blocks/Media/index.js +39 -4
- package/build/esm/blocks/PromoFeaturesBlock/index.d.ts +11 -1
- package/build/esm/blocks/PromoFeaturesBlock/index.js +31 -1
- package/build/esm/blocks/Questions/index.d.ts +1 -0
- package/build/esm/blocks/Questions/index.js +1 -0
- package/build/esm/blocks/Share/index.d.ts +1 -0
- package/build/esm/blocks/Share/index.js +1 -0
- package/build/esm/blocks/Slider/index.d.ts +19 -0
- package/build/esm/blocks/Slider/index.js +31 -0
- package/build/esm/blocks/Table/index.d.ts +10 -0
- package/build/esm/blocks/Table/index.js +17 -0
- package/build/esm/blocks/Tabs/index.d.ts +1 -0
- package/build/esm/blocks/Tabs/index.js +1 -0
- package/build/esm/common/types/forms.d.ts +1 -0
- package/build/esm/constructor-items.d.ts +2 -6
- package/build/esm/constructor-items.js +1 -1
- package/build/esm/editor-v2/components/BlocksList/BlocksList.css +27 -1
- package/build/esm/editor-v2/components/BlocksList/BlocksList.js +35 -3
- package/build/esm/editor-v2/components/Panels/Panels.css +36 -0
- package/build/esm/editor-v2/components/Panels/Panels.d.ts +9 -0
- package/build/esm/editor-v2/components/Panels/Panels.js +37 -0
- package/build/esm/editor-v2/components/Tree/Tree.css +11 -0
- package/build/esm/editor-v2/components/Tree/Tree.js +11 -3
- package/build/esm/editor-v2/containers/Editor/Editor.css +0 -10
- package/build/esm/editor-v2/containers/Editor/Editor.js +2 -13
- package/build/esm/editor-v2/context/contentConfig/store.d.ts +1 -0
- package/build/esm/editor-v2/context/contentConfig/store.js +3 -0
- package/build/esm/sub-blocks/BackgroundCard/index.js +2 -0
- package/build/esm/sub-blocks/BannerCard/index.js +1 -0
- package/build/esm/sub-blocks/BasicCard/index.js +1 -0
- package/build/esm/sub-blocks/Content/index.js +1 -0
- package/build/esm/sub-blocks/ImageCard/index.js +1 -0
- package/build/esm/sub-blocks/LayoutItem/index.js +7 -2
- package/build/esm/sub-blocks/MediaCard/index.js +2 -0
- package/build/esm/sub-blocks/PriceCard/index.js +1 -0
- package/build/esm/sub-blocks/PriceDetailed/index.js +1 -0
- package/build/esm/sub-blocks/Quote/index.js +1 -0
- package/package.json +1 -1
- package/widget/index.js +1 -1
- package/build/cjs/sub-blocks/LayoutItem/form.d.ts +0 -8
- package/build/cjs/sub-blocks/LayoutItem/form.js +0 -14
- package/build/esm/sub-blocks/LayoutItem/form.d.ts +0 -8
- package/build/esm/sub-blocks/LayoutItem/form.js +0 -11
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React, { useRef } from 'react';
|
|
2
|
+
import { ArrowLeftFromLine, ArrowRightFromLine, Grip } from '@gravity-ui/icons';
|
|
3
|
+
import { Button, Icon } from '@gravity-ui/uikit';
|
|
4
|
+
import { Panel, PanelGroup, PanelResizeHandle } from 'react-resizable-panels';
|
|
5
|
+
import { block } from '../../../utils';
|
|
6
|
+
import './Panels.css';
|
|
7
|
+
const b = block('panels');
|
|
8
|
+
export const Panels = (props) => {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
const { left, right, middle } = props;
|
|
11
|
+
const leftPanel = useRef(null);
|
|
12
|
+
const rightPanel = useRef(null);
|
|
13
|
+
const expandPanel = (reference) => {
|
|
14
|
+
const panel = reference.current;
|
|
15
|
+
if (panel) {
|
|
16
|
+
panel.expand();
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const isCollapsed = {
|
|
20
|
+
left: ((_a = leftPanel.current) === null || _a === void 0 ? void 0 : _a.isCollapsed()) || false,
|
|
21
|
+
right: ((_b = rightPanel.current) === null || _b === void 0 ? void 0 : _b.isCollapsed()) || false,
|
|
22
|
+
};
|
|
23
|
+
return (React.createElement(PanelGroup, { className: b('panel'), autoSaveId: "page-constructor-editor", direction: "horizontal" },
|
|
24
|
+
React.createElement(Panel, { ref: leftPanel, collapsible: true, defaultSize: 25, minSize: 15 }, left),
|
|
25
|
+
React.createElement(PanelResizeHandle, { className: b('draggable') },
|
|
26
|
+
React.createElement(Grip, { className: b('grip') }),
|
|
27
|
+
isCollapsed.left && (React.createElement("div", { className: b('button-wrap', { left: true }) },
|
|
28
|
+
React.createElement(Button, { className: b('button'), view: "action", onClick: () => expandPanel(leftPanel) },
|
|
29
|
+
React.createElement(Icon, { data: ArrowRightFromLine }))))),
|
|
30
|
+
React.createElement(Panel, { minSize: 20 }, middle),
|
|
31
|
+
React.createElement(PanelResizeHandle, { className: b('draggable') },
|
|
32
|
+
React.createElement(Grip, { className: b('grip') }),
|
|
33
|
+
isCollapsed.right && (React.createElement("div", { className: b('button-wrap', { right: true }) },
|
|
34
|
+
React.createElement(Button, { className: b('button'), view: "action", onClick: () => expandPanel(rightPanel) },
|
|
35
|
+
React.createElement(Icon, { data: ArrowLeftFromLine }))))),
|
|
36
|
+
React.createElement(Panel, { ref: rightPanel, collapsible: true, minSize: 15, defaultSize: 25 }, right)));
|
|
37
|
+
};
|
|
@@ -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 {
|
|
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() },
|
|
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;
|
|
@@ -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(
|
|
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
|
|
@@ -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,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: '
|
|
12
|
-
text: '
|
|
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
|
};
|