@gravity-ui/page-constructor 2.22.0-alpha → 2.22.0-alpha.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 (162) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/build/cjs/components/Anchor/Anchor.d.ts +2 -2
  3. package/build/cjs/components/Anchor/Anchor.js +1 -1
  4. package/build/cjs/components/BackgroundImage/BackgroundImage.js +2 -2
  5. package/build/cjs/components/BlockBase/BlockBase.d.ts +3 -2
  6. package/build/cjs/components/BlockBase/BlockBase.js +4 -2
  7. package/build/cjs/components/Button/Button.css +3 -0
  8. package/build/cjs/components/Button/Button.js +5 -4
  9. package/build/cjs/components/Image/Image.d.ts +1 -0
  10. package/build/cjs/components/Image/Image.js +2 -2
  11. package/build/cjs/containers/Loadable/Loadable.d.ts +2 -2
  12. package/build/cjs/containers/PageConstructor/PageConstructor.js +5 -3
  13. package/build/cjs/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +3 -2
  14. package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +1 -1
  15. package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +5 -5
  16. package/build/cjs/context/innerContext/InnerContext.d.ts +2 -1
  17. package/build/cjs/customization/BlockDecoration.d.ts +3 -0
  18. package/build/cjs/customization/BlockDecoration.js +22 -0
  19. package/build/cjs/editor/Components/AddBlock/AddBlock.css +82 -0
  20. package/build/cjs/editor/Components/AddBlock/AddBlock.d.ts +7 -0
  21. package/build/cjs/editor/Components/AddBlock/AddBlock.js +43 -0
  22. package/build/cjs/editor/Components/EditBlock/EditBlock.css +47 -0
  23. package/build/cjs/editor/Components/EditBlock/EditBlock.d.ts +4 -0
  24. package/build/cjs/editor/Components/EditBlock/EditBlock.js +32 -0
  25. package/build/cjs/editor/Containers/Editor.d.ts +2 -0
  26. package/build/cjs/editor/Containers/Editor.js +24 -0
  27. package/build/cjs/editor/data/index.d.ts +13 -0
  28. package/build/cjs/editor/data/index.js +27 -0
  29. package/build/cjs/editor/data/previews/default-preview.d.ts +3 -0
  30. package/build/cjs/editor/data/previews/default-preview.js +18 -0
  31. package/build/cjs/editor/data/previews/header-block.d.ts +3 -0
  32. package/build/cjs/editor/data/previews/header-block.js +19 -0
  33. package/build/cjs/editor/index.d.ts +2 -0
  34. package/build/cjs/editor/index.js +7 -0
  35. package/build/cjs/editor/store/index.d.ts +15 -0
  36. package/build/cjs/editor/store/index.js +32 -0
  37. package/build/cjs/editor/store/reducer.d.ts +41 -0
  38. package/build/cjs/editor/store/reducer.js +59 -0
  39. package/build/cjs/editor/store/utils.d.ts +13 -0
  40. package/build/cjs/editor/store/utils.js +34 -0
  41. package/build/cjs/editor/styles/mixins.css +0 -0
  42. package/build/cjs/editor/styles/variables.css +0 -0
  43. package/build/cjs/editor/types/index.d.ts +17 -0
  44. package/build/cjs/editor/types/index.js +2 -0
  45. package/build/cjs/editor/utils/index.d.ts +11 -0
  46. package/build/cjs/editor/utils/index.js +12 -0
  47. package/build/cjs/grid/Col/Col.d.ts +1 -1
  48. package/build/cjs/hooks/useMetrika.js +0 -7
  49. package/build/cjs/internal-typings/global.d.ts +18 -16
  50. package/build/cjs/models/constructor-items/blocks.d.ts +1 -11
  51. package/build/cjs/models/constructor-items/blocks.js +0 -2
  52. package/build/cjs/models/constructor-items/common.d.ts +3 -3
  53. package/build/cjs/models/constructor.d.ts +4 -1
  54. package/build/cjs/models/customization.d.ts +9 -0
  55. package/build/cjs/models/customization.js +2 -0
  56. package/build/cjs/models/index.d.ts +1 -0
  57. package/build/cjs/models/index.js +1 -0
  58. package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.d.ts +2 -1
  59. package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.js +5 -2
  60. package/build/cjs/sub-blocks/HubspotForm/index.d.ts +1 -1
  61. package/build/cjs/sub-blocks/HubspotForm/index.js +6 -5
  62. package/build/cjs/utils/blocks.d.ts +4 -1
  63. package/build/cjs/utils/blocks.js +11 -1
  64. package/build/esm/components/Anchor/Anchor.d.ts +2 -2
  65. package/build/esm/components/Anchor/Anchor.js +1 -1
  66. package/build/esm/components/BackgroundImage/BackgroundImage.js +2 -2
  67. package/build/esm/components/BlockBase/BlockBase.d.ts +3 -2
  68. package/build/esm/components/BlockBase/BlockBase.js +4 -2
  69. package/build/esm/components/Button/Button.css +3 -0
  70. package/build/esm/components/Button/Button.js +5 -4
  71. package/build/esm/components/Image/Image.d.ts +1 -0
  72. package/build/esm/components/Image/Image.js +2 -2
  73. package/build/esm/containers/Loadable/Loadable.d.ts +2 -2
  74. package/build/esm/containers/PageConstructor/PageConstructor.js +6 -4
  75. package/build/esm/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +3 -2
  76. package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +1 -1
  77. package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +5 -5
  78. package/build/esm/context/innerContext/InnerContext.d.ts +2 -1
  79. package/build/esm/customization/BlockDecoration.d.ts +3 -0
  80. package/build/esm/customization/BlockDecoration.js +17 -0
  81. package/build/esm/editor/Components/AddBlock/AddBlock.css +82 -0
  82. package/build/esm/editor/Components/AddBlock/AddBlock.d.ts +8 -0
  83. package/build/esm/editor/Components/AddBlock/AddBlock.js +41 -0
  84. package/build/esm/editor/Components/EditBlock/EditBlock.css +47 -0
  85. package/build/esm/editor/Components/EditBlock/EditBlock.d.ts +5 -0
  86. package/build/esm/editor/Components/EditBlock/EditBlock.js +30 -0
  87. package/build/esm/editor/Containers/Editor.d.ts +2 -0
  88. package/build/esm/editor/Containers/Editor.js +20 -0
  89. package/build/esm/editor/data/index.d.ts +13 -0
  90. package/build/esm/editor/data/index.js +24 -0
  91. package/build/esm/editor/data/previews/default-preview.d.ts +3 -0
  92. package/build/esm/editor/data/previews/default-preview.js +15 -0
  93. package/build/esm/editor/data/previews/header-block.d.ts +3 -0
  94. package/build/esm/editor/data/previews/header-block.js +16 -0
  95. package/build/esm/editor/index.d.ts +2 -0
  96. package/build/esm/editor/index.js +2 -0
  97. package/build/esm/editor/store/index.d.ts +15 -0
  98. package/build/esm/editor/store/index.js +28 -0
  99. package/build/esm/editor/store/reducer.d.ts +41 -0
  100. package/build/esm/editor/store/reducer.js +55 -0
  101. package/build/esm/editor/store/utils.d.ts +13 -0
  102. package/build/esm/editor/store/utils.js +26 -0
  103. package/build/esm/editor/styles/mixins.css +0 -0
  104. package/build/esm/editor/styles/variables.css +0 -0
  105. package/build/esm/editor/types/index.d.ts +17 -0
  106. package/build/esm/editor/utils/index.d.ts +11 -0
  107. package/build/esm/editor/utils/index.js +6 -0
  108. package/build/esm/grid/Col/Col.d.ts +1 -1
  109. package/build/esm/hooks/useMetrika.js +0 -7
  110. package/build/esm/internal-typings/global.d.ts +18 -16
  111. package/build/esm/models/constructor-items/blocks.d.ts +1 -11
  112. package/build/esm/models/constructor-items/blocks.js +0 -2
  113. package/build/esm/models/constructor-items/common.d.ts +3 -3
  114. package/build/esm/models/constructor.d.ts +4 -1
  115. package/build/esm/models/customization.d.ts +9 -0
  116. package/build/esm/models/index.d.ts +1 -0
  117. package/build/esm/models/index.js +1 -0
  118. package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.d.ts +2 -1
  119. package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.js +6 -3
  120. package/build/esm/sub-blocks/HubspotForm/index.d.ts +1 -1
  121. package/build/esm/sub-blocks/HubspotForm/index.js +7 -6
  122. package/build/esm/utils/blocks.d.ts +4 -1
  123. package/build/esm/utils/blocks.js +7 -0
  124. package/package.json +4 -3
  125. package/server/models/constructor-items/blocks.d.ts +1 -11
  126. package/server/models/constructor-items/blocks.js +0 -2
  127. package/server/models/constructor-items/common.d.ts +3 -3
  128. package/server/models/constructor.d.ts +4 -1
  129. package/server/models/customization.d.ts +9 -0
  130. package/server/models/customization.js +2 -0
  131. package/server/models/index.d.ts +1 -0
  132. package/server/models/index.js +1 -0
  133. package/server/utils/blocks.d.ts +4 -1
  134. package/server/utils/blocks.js +11 -1
  135. package/build/cjs/components/Anchor/__tests__/Anchor.test.js +0 -21
  136. package/build/cjs/components/AnimateBlock/__tests__/AnimateBlock.test.js +0 -36
  137. package/build/cjs/components/Author/__tests__/Author.test.d.ts +0 -1
  138. package/build/cjs/components/Author/__tests__/Author.test.js +0 -49
  139. package/build/cjs/components/BackLink/__tests__/BackLink.test.d.ts +0 -1
  140. package/build/cjs/components/BackLink/__tests__/BackLink.test.js +0 -63
  141. package/build/cjs/components/BlockBase/__tests__/BlockBase.test.d.ts +0 -1
  142. package/build/cjs/components/BlockBase/__tests__/BlockBase.test.js +0 -44
  143. package/build/cjs/components/Button/__tests__/Button.test.d.ts +0 -1
  144. package/build/cjs/components/Button/__tests__/Button.test.js +0 -91
  145. package/build/cjs/components/ButtonTabs/__tests__/ButtonTabs.test.d.ts +0 -1
  146. package/build/cjs/components/ButtonTabs/__tests__/ButtonTabs.test.js +0 -58
  147. package/build/esm/components/Anchor/__tests__/Anchor.test.d.ts +0 -1
  148. package/build/esm/components/Anchor/__tests__/Anchor.test.js +0 -18
  149. package/build/esm/components/AnimateBlock/__tests__/AnimateBlock.test.d.ts +0 -1
  150. package/build/esm/components/AnimateBlock/__tests__/AnimateBlock.test.js +0 -33
  151. package/build/esm/components/Author/__tests__/Author.test.d.ts +0 -1
  152. package/build/esm/components/Author/__tests__/Author.test.js +0 -46
  153. package/build/esm/components/BackLink/__tests__/BackLink.test.d.ts +0 -1
  154. package/build/esm/components/BackLink/__tests__/BackLink.test.js +0 -60
  155. package/build/esm/components/BlockBase/__tests__/BlockBase.test.d.ts +0 -1
  156. package/build/esm/components/BlockBase/__tests__/BlockBase.test.js +0 -41
  157. package/build/esm/components/Button/__tests__/Button.test.d.ts +0 -1
  158. package/build/esm/components/Button/__tests__/Button.test.js +0 -88
  159. package/build/esm/components/ButtonTabs/__tests__/ButtonTabs.test.d.ts +0 -1
  160. package/build/esm/components/ButtonTabs/__tests__/ButtonTabs.test.js +0 -55
  161. /package/build/{cjs/components/Anchor/__tests__/Anchor.test.d.ts → esm/editor/types/index.js} +0 -0
  162. /package/build/{cjs/components/AnimateBlock/__tests__/AnimateBlock.test.d.ts → esm/models/customization.js} +0 -0
@@ -1,60 +0,0 @@
1
- import React from 'react';
2
- import { render, screen } from '@testing-library/react';
3
- import userEvent from '@testing-library/user-event';
4
- import { LocationContext } from '../../../context/locationContext';
5
- import BackLink from '../BackLink';
6
- const backLinkProps = {
7
- url: '#',
8
- title: 'Button Title',
9
- theme: 'default',
10
- size: 's',
11
- className: 'customClassName',
12
- shouldHandleBackAction: true,
13
- onClick: () => { },
14
- };
15
- describe('BackLink', () => {
16
- test('Default render', async () => {
17
- render(React.createElement(BackLink, Object.assign({}, backLinkProps)));
18
- const backLink = screen.getByRole('button');
19
- expect(backLink).toBeInTheDocument();
20
- });
21
- test('Has custom class', async () => {
22
- render(React.createElement(BackLink, Object.assign({}, backLinkProps)));
23
- const backLink = screen.getByRole('button');
24
- expect(backLink).toHaveClass(backLinkProps.className);
25
- });
26
- test('Should render <a /> tag', async () => {
27
- render(React.createElement(BackLink, Object.assign({}, backLinkProps, { shouldHandleBackAction: false })));
28
- const backLink = screen.getByRole('link');
29
- expect(backLink).toBeVisible();
30
- expect(backLink).toHaveAttribute('href', backLinkProps.url);
31
- });
32
- test('Should render title', async () => {
33
- render(React.createElement(BackLink, Object.assign({}, backLinkProps)));
34
- const backLink = screen.getByText(backLinkProps.title);
35
- expect(backLink).toBeInTheDocument();
36
- });
37
- test('Call onClick', async () => {
38
- const user = userEvent.setup();
39
- const handleClick = jest.fn();
40
- render(React.createElement(LocationContext.Provider, { value: { history: { push: jest.fn() } } },
41
- React.createElement(BackLink, Object.assign({}, backLinkProps, { onClick: handleClick }))));
42
- const backLink = screen.getByRole('button');
43
- await user.click(backLink);
44
- expect(handleClick).toHaveBeenCalledTimes(1);
45
- });
46
- test.each(new Array('s', 'm', 'l', 'xl'))('Render with given "%s" size', (size) => {
47
- render(React.createElement(BackLink, Object.assign({}, backLinkProps, { size: size })));
48
- const backLink = screen.getByRole('button');
49
- expect(backLink).toHaveClass(`yc-button_size_${size}`);
50
- });
51
- test.each(new Array('default', 'special'))('Render with given "%s" theme', (theme) => {
52
- const matchView = {
53
- default: 'flat-secondary',
54
- special: 'flat-contrast',
55
- };
56
- render(React.createElement(BackLink, Object.assign({}, backLinkProps, { theme: theme })));
57
- const backLink = screen.getByRole('button');
58
- expect(backLink).toHaveClass(`yc-button_view_${matchView[theme]}`);
59
- });
60
- });
@@ -1,41 +0,0 @@
1
- import React from 'react';
2
- import { render, screen } from '@testing-library/react';
3
- import { qaIdByDefault } from '../../../components/Anchor/Anchor';
4
- import { GridColumnSize } from '../../../grid';
5
- import BlockBase from '../BlockBase';
6
- const qaId = 'block-base-component';
7
- describe('BlockBase', () => {
8
- test('render component by default', async () => {
9
- render(React.createElement(BlockBase, { qa: qaId }));
10
- const component = screen.getByTestId(qaId);
11
- expect(component).toBeInTheDocument();
12
- expect(component).toBeVisible();
13
- expect(component).not.toBeDisabled();
14
- });
15
- test('add className', () => {
16
- const className = 'my-class';
17
- render(React.createElement(BlockBase, { qa: qaId, className: className }));
18
- const component = screen.getByTestId(qaId);
19
- expect(component).toHaveClass(className);
20
- });
21
- test('should reset paddings', () => {
22
- render(React.createElement(BlockBase, { qa: qaId, resetPaddings: true }));
23
- const component = screen.getByTestId(qaId);
24
- expect(component).toHaveClass('pc-block-base_reset-paddings');
25
- });
26
- test.each(new Array(...Object.values(GridColumnSize)))('render with given "%s" size', (size) => {
27
- render(React.createElement(BlockBase, { qa: qaId, visible: size }));
28
- const component = screen.getByTestId(qaId);
29
- expect(component).toHaveClass(`d-${size}-block`);
30
- });
31
- test('should have anchor', () => {
32
- const anchor = {
33
- text: 'anchor',
34
- url: 'https://github.com/gravity-ui/',
35
- };
36
- render(React.createElement(BlockBase, { anchor: anchor }));
37
- const component = screen.getByTestId(qaIdByDefault);
38
- expect(component).toBeInTheDocument();
39
- expect(component).toHaveAttribute('id', anchor.url);
40
- });
41
- });
@@ -1,88 +0,0 @@
1
- import React from 'react';
2
- import { render, screen } from '@testing-library/react';
3
- import userEvent from '@testing-library/user-event';
4
- import Button from '../Button';
5
- import { ICON_QA } from '../utils';
6
- const qaId = 'button-component';
7
- const buttonProps = {
8
- text: 'Button Text',
9
- url: 'https://github.com/gravity-ui/',
10
- target: '_blank',
11
- img: {
12
- url: 'https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_1_light.svg',
13
- position: 'left',
14
- alt: 'alt-text',
15
- },
16
- };
17
- const buttonViews = [
18
- 'normal',
19
- 'action',
20
- 'outlined',
21
- 'outlined-info',
22
- 'outlined-danger',
23
- 'raised',
24
- 'flat',
25
- 'flat-info',
26
- 'flat-danger',
27
- 'flat-secondary',
28
- 'normal-contrast',
29
- 'outlined-contrast',
30
- 'flat-contrast',
31
- 'github',
32
- 'scale',
33
- 'monochrome',
34
- ];
35
- describe('Button', () => {
36
- test('render button by default', async () => {
37
- render(React.createElement(Button, { text: buttonProps.text }));
38
- const button = screen.getByRole('button');
39
- expect(button).toBeInTheDocument();
40
- expect(button).toBeVisible();
41
- expect(button).not.toBeDisabled();
42
- });
43
- test('should render <a /> tag', async () => {
44
- render(React.createElement(Button, { text: buttonProps.text, url: buttonProps.url, target: buttonProps.target }));
45
- const button = screen.getByRole('link');
46
- expect(button).toBeVisible();
47
- expect(button).toHaveAttribute('href', buttonProps.url);
48
- expect(button).toHaveAttribute('target', buttonProps.target);
49
- });
50
- test('call onClick', async () => {
51
- const user = userEvent.setup();
52
- const handleOnClick = jest.fn();
53
- render(React.createElement(Button, { text: buttonProps.text, onClick: handleOnClick }));
54
- const button = screen.getByRole('button');
55
- await user.click(button);
56
- expect(handleOnClick).toHaveBeenCalledTimes(1);
57
- });
58
- test.each(new Array('s', 'm', 'l', 'xl'))('render with given "%s" size', (size) => {
59
- render(React.createElement(Button, { text: buttonProps.text, size: size, qa: qaId }));
60
- const button = screen.getByTestId(qaId);
61
- expect(button).toHaveClass(`pc-button-block_size_${size}`);
62
- });
63
- test.each(new Array(...buttonViews))('render with given "%s" view', (theme) => {
64
- render(React.createElement(Button, { text: buttonProps.text, theme: theme, qa: qaId }));
65
- const button = screen.getByTestId(qaId);
66
- expect(button).toHaveClass(`pc-button-block_theme_${theme}`);
67
- });
68
- test('add className', () => {
69
- const className = 'my-class';
70
- render(React.createElement(Button, { text: buttonProps.text, className: className, qa: qaId }));
71
- const button = screen.getByTestId(qaId);
72
- expect(button).toHaveClass(className);
73
- });
74
- test('should render icon', () => {
75
- render(React.createElement(Button, { text: buttonProps.text, img: buttonProps.img }));
76
- const button = screen.getByRole('button');
77
- const iconComponent = screen.getByRole('img');
78
- expect(iconComponent).toBeVisible();
79
- expect(button).toContainElement(iconComponent);
80
- });
81
- test('should render github icon', () => {
82
- render(React.createElement(Button, { text: buttonProps.text, img: buttonProps.img, theme: "github" }));
83
- const button = screen.getByRole('button');
84
- const iconComponent = screen.getByTestId(ICON_QA);
85
- expect(iconComponent).toBeVisible();
86
- expect(button).toContainElement(iconComponent);
87
- });
88
- });
@@ -1,55 +0,0 @@
1
- import React from 'react';
2
- import { render, screen } from '@testing-library/react';
3
- import userEvent from '@testing-library/user-event';
4
- import ButtonTabs from '../ButtonTabs';
5
- const qaId = 'button-tabs-component';
6
- const items = [
7
- {
8
- id: '0',
9
- title: 'tab-1',
10
- },
11
- {
12
- id: '1',
13
- title: 'tab-2',
14
- },
15
- {
16
- id: '2',
17
- title: 'tab-3',
18
- },
19
- ];
20
- describe('ButtonTabs', () => {
21
- test('render ButtonTabs by default', async () => {
22
- render(React.createElement(ButtonTabs, { items: items, qa: qaId }));
23
- const buttonTabs = screen.getByTestId(qaId);
24
- expect(buttonTabs).toBeInTheDocument();
25
- expect(buttonTabs).toBeVisible();
26
- expect(buttonTabs).not.toBeDisabled();
27
- });
28
- test('has active tab', async () => {
29
- const activeTabId = 1;
30
- render(React.createElement(ButtonTabs, { items: items, qa: qaId, activeTab: String(activeTabId) }));
31
- const buttons = screen.getAllByRole('button');
32
- buttons.forEach((button, index) => {
33
- if (index === activeTabId) {
34
- expect(button).toHaveClass('pc-button-tabs__item_active');
35
- }
36
- expect(button).toHaveClass('pc-button-block_theme_normal');
37
- });
38
- });
39
- test('add className', () => {
40
- const className = 'my-class';
41
- render(React.createElement(ButtonTabs, { items: items, qa: qaId, className: className }));
42
- const buttonTabs = screen.getByTestId(qaId);
43
- expect(buttonTabs).toHaveClass(className);
44
- });
45
- test('call onSelectTab', async () => {
46
- const user = userEvent.setup();
47
- const handleOnClick = jest.fn();
48
- render(React.createElement(ButtonTabs, { items: items, qa: qaId, onSelectTab: handleOnClick }));
49
- const buttons = screen.getAllByRole('button');
50
- buttons.forEach(async (button, i) => {
51
- await user.click(button);
52
- expect(handleOnClick).toHaveBeenCalledTimes(i + 1);
53
- });
54
- });
55
- });