@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.
Files changed (126) 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/BlocksList/BlocksList.css +27 -1
  41. package/build/cjs/editor-v2/components/BlocksList/BlocksList.js +34 -2
  42. package/build/cjs/editor-v2/components/Panels/Panels.css +36 -0
  43. package/build/cjs/editor-v2/components/Panels/Panels.d.ts +8 -0
  44. package/build/cjs/editor-v2/components/Panels/Panels.js +41 -0
  45. package/build/cjs/editor-v2/components/Tree/Tree.css +11 -0
  46. package/build/cjs/editor-v2/components/Tree/Tree.js +10 -2
  47. package/build/cjs/editor-v2/containers/Editor/Editor.css +0 -10
  48. package/build/cjs/editor-v2/containers/Editor/Editor.js +2 -13
  49. package/build/cjs/editor-v2/context/contentConfig/store.d.ts +1 -0
  50. package/build/cjs/editor-v2/context/contentConfig/store.js +3 -0
  51. package/build/cjs/sub-blocks/BackgroundCard/index.js +2 -0
  52. package/build/cjs/sub-blocks/BannerCard/index.js +1 -0
  53. package/build/cjs/sub-blocks/BasicCard/index.js +1 -0
  54. package/build/cjs/sub-blocks/Content/index.js +1 -0
  55. package/build/cjs/sub-blocks/ImageCard/index.js +1 -0
  56. package/build/cjs/sub-blocks/LayoutItem/index.js +7 -2
  57. package/build/cjs/sub-blocks/MediaCard/index.js +2 -0
  58. package/build/cjs/sub-blocks/PriceCard/index.js +1 -0
  59. package/build/cjs/sub-blocks/PriceDetailed/index.js +1 -0
  60. package/build/cjs/sub-blocks/Quote/index.js +1 -0
  61. package/build/esm/blocks/Banner/index.js +1 -0
  62. package/build/esm/blocks/CardLayout/index.js +21 -3
  63. package/build/esm/blocks/Companies/index.js +1 -0
  64. package/build/esm/blocks/ContentLayout/index.d.ts +31 -1
  65. package/build/esm/blocks/ContentLayout/index.js +64 -1
  66. package/build/esm/blocks/ExtendedFeatures/index.d.ts +48 -2
  67. package/build/esm/blocks/ExtendedFeatures/index.js +60 -2
  68. package/build/esm/blocks/FilterBlock/index.d.ts +18 -0
  69. package/build/esm/blocks/FilterBlock/index.js +81 -1
  70. package/build/esm/blocks/Form/index.d.ts +1 -0
  71. package/build/esm/blocks/Form/index.js +1 -0
  72. package/build/esm/blocks/Header/index.d.ts +11 -0
  73. package/build/esm/blocks/Header/index.js +18 -0
  74. package/build/esm/blocks/HeaderSlider/index.d.ts +1 -0
  75. package/build/esm/blocks/HeaderSlider/index.js +1 -0
  76. package/build/esm/blocks/Icons/Icons.js +2 -2
  77. package/build/esm/blocks/Icons/index.d.ts +7 -0
  78. package/build/esm/blocks/Icons/index.js +44 -0
  79. package/build/esm/blocks/Info/index.d.ts +1 -0
  80. package/build/esm/blocks/Info/index.js +1 -0
  81. package/build/esm/blocks/Map/index.d.ts +1 -0
  82. package/build/esm/blocks/Map/index.js +1 -0
  83. package/build/esm/blocks/Media/index.d.ts +26 -2
  84. package/build/esm/blocks/Media/index.js +39 -4
  85. package/build/esm/blocks/PromoFeaturesBlock/index.d.ts +11 -1
  86. package/build/esm/blocks/PromoFeaturesBlock/index.js +31 -1
  87. package/build/esm/blocks/Questions/index.d.ts +1 -0
  88. package/build/esm/blocks/Questions/index.js +1 -0
  89. package/build/esm/blocks/Share/index.d.ts +1 -0
  90. package/build/esm/blocks/Share/index.js +1 -0
  91. package/build/esm/blocks/Slider/index.d.ts +19 -0
  92. package/build/esm/blocks/Slider/index.js +31 -0
  93. package/build/esm/blocks/Table/index.d.ts +10 -0
  94. package/build/esm/blocks/Table/index.js +17 -0
  95. package/build/esm/blocks/Tabs/index.d.ts +1 -0
  96. package/build/esm/blocks/Tabs/index.js +1 -0
  97. package/build/esm/common/types/forms.d.ts +1 -0
  98. package/build/esm/constructor-items.d.ts +2 -6
  99. package/build/esm/constructor-items.js +1 -1
  100. package/build/esm/editor-v2/components/BlocksList/BlocksList.css +27 -1
  101. package/build/esm/editor-v2/components/BlocksList/BlocksList.js +35 -3
  102. package/build/esm/editor-v2/components/Panels/Panels.css +36 -0
  103. package/build/esm/editor-v2/components/Panels/Panels.d.ts +9 -0
  104. package/build/esm/editor-v2/components/Panels/Panels.js +37 -0
  105. package/build/esm/editor-v2/components/Tree/Tree.css +11 -0
  106. package/build/esm/editor-v2/components/Tree/Tree.js +11 -3
  107. package/build/esm/editor-v2/containers/Editor/Editor.css +0 -10
  108. package/build/esm/editor-v2/containers/Editor/Editor.js +2 -13
  109. package/build/esm/editor-v2/context/contentConfig/store.d.ts +1 -0
  110. package/build/esm/editor-v2/context/contentConfig/store.js +3 -0
  111. package/build/esm/sub-blocks/BackgroundCard/index.js +2 -0
  112. package/build/esm/sub-blocks/BannerCard/index.js +1 -0
  113. package/build/esm/sub-blocks/BasicCard/index.js +1 -0
  114. package/build/esm/sub-blocks/Content/index.js +1 -0
  115. package/build/esm/sub-blocks/ImageCard/index.js +1 -0
  116. package/build/esm/sub-blocks/LayoutItem/index.js +7 -2
  117. package/build/esm/sub-blocks/MediaCard/index.js +2 -0
  118. package/build/esm/sub-blocks/PriceCard/index.js +1 -0
  119. package/build/esm/sub-blocks/PriceDetailed/index.js +1 -0
  120. package/build/esm/sub-blocks/Quote/index.js +1 -0
  121. package/package.json +1 -1
  122. package/widget/index.js +1 -1
  123. package/build/cjs/sub-blocks/LayoutItem/form.d.ts +0 -8
  124. package/build/cjs/sub-blocks/LayoutItem/form.js +0 -14
  125. package/build/esm/sub-blocks/LayoutItem/form.d.ts +0 -8
  126. package/build/esm/sub-blocks/LayoutItem/form.js +0 -11
@@ -0,0 +1,9 @@
1
+ import { ReactElement } from 'react';
2
+ import './Panels.css';
3
+ interface PanelsProps {
4
+ left: ReactElement;
5
+ middle: ReactElement;
6
+ right: ReactElement;
7
+ }
8
+ export declare const Panels: (props: PanelsProps) => JSX.Element;
9
+ export {};
@@ -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 { 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;
@@ -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
@@ -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.2",
3
+ "version": "5.14.4-alpha.3",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {