@gravity-ui/page-constructor 2.21.0 → 2.22.0-alpha
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/CHANGELOG.md +0 -53
- package/README.md +1 -1
- package/build/cjs/blocks/Header/schema.d.ts +18 -0
- package/build/cjs/blocks/HeaderSlider/schema.d.ts +6 -0
- package/build/cjs/blocks/Media/schema.d.ts +12 -0
- package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +6 -0
- package/build/cjs/blocks/Security/schema.d.ts +6 -0
- package/build/cjs/blocks/Tabs/schema.d.ts +6 -0
- package/build/cjs/components/Anchor/Anchor.d.ts +2 -2
- package/build/cjs/components/Anchor/Anchor.js +1 -1
- package/build/cjs/components/Anchor/__tests__/Anchor.test.js +21 -0
- package/build/cjs/components/AnimateBlock/__tests__/AnimateBlock.test.js +36 -0
- package/build/cjs/components/Author/__tests__/Author.test.d.ts +1 -0
- package/build/cjs/components/Author/__tests__/Author.test.js +49 -0
- package/build/cjs/components/BackLink/__tests__/BackLink.test.d.ts +1 -0
- package/build/cjs/components/BackLink/__tests__/BackLink.test.js +63 -0
- package/build/cjs/components/BackgroundImage/BackgroundImage.js +2 -2
- package/build/cjs/components/BlockBase/BlockBase.d.ts +2 -3
- package/build/cjs/components/BlockBase/BlockBase.js +2 -4
- package/build/cjs/components/BlockBase/__tests__/BlockBase.test.d.ts +1 -0
- package/build/cjs/components/BlockBase/__tests__/BlockBase.test.js +44 -0
- package/build/cjs/components/Button/Button.css +0 -3
- package/build/cjs/components/Button/Button.js +4 -5
- package/build/cjs/components/Button/__tests__/Button.test.d.ts +1 -0
- package/build/cjs/components/Button/__tests__/Button.test.js +91 -0
- package/build/cjs/components/ButtonTabs/__tests__/ButtonTabs.test.d.ts +1 -0
- package/build/cjs/components/ButtonTabs/__tests__/ButtonTabs.test.js +58 -0
- package/build/cjs/components/FullscreenImage/FullscreenImage.d.ts +2 -2
- package/build/cjs/components/FullscreenImage/FullscreenImage.js +5 -5
- package/build/cjs/components/FullscreenMedia/FullscreenMedia.d.ts +13 -0
- package/build/cjs/components/FullscreenMedia/{FullScreenMedia.js → FullscreenMedia.js} +3 -3
- package/build/cjs/components/Image/Image.d.ts +0 -1
- package/build/cjs/components/Image/Image.js +2 -2
- package/build/cjs/components/Media/FullscreenVideo/FullscreenVideo.d.ts +4 -0
- package/build/cjs/components/Media/FullscreenVideo/FullscreenVideo.js +10 -0
- package/build/cjs/components/Media/Image/Image.d.ts +1 -0
- package/build/cjs/components/Media/Image/Image.js +10 -3
- package/build/cjs/components/Media/Media.js +25 -4
- package/build/cjs/components/Media/Video/Video.d.ts +1 -1
- package/build/cjs/components/VideoBlock/VideoBlock.d.ts +4 -0
- package/build/cjs/components/VideoBlock/VideoBlock.js +3 -3
- package/build/cjs/components/index.d.ts +1 -1
- package/build/cjs/components/index.js +2 -2
- package/build/cjs/constructor-items.d.ts +1 -1
- package/build/cjs/containers/Loadable/Loadable.d.ts +2 -2
- package/build/cjs/containers/PageConstructor/PageConstructor.js +3 -5
- package/build/cjs/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +2 -3
- package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +1 -1
- package/build/cjs/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +5 -5
- package/build/cjs/context/innerContext/InnerContext.d.ts +1 -2
- package/build/cjs/grid/Col/Col.d.ts +1 -1
- package/build/cjs/hooks/useMetrika.js +7 -0
- package/build/cjs/internal-typings/global.d.ts +16 -18
- package/build/cjs/models/constructor-items/blocks.d.ts +11 -1
- package/build/cjs/models/constructor-items/blocks.js +2 -0
- package/build/cjs/models/constructor-items/common.d.ts +7 -3
- package/build/cjs/models/constructor-items/sub-blocks.d.ts +4 -0
- package/build/cjs/models/constructor.d.ts +1 -4
- package/build/cjs/models/index.d.ts +0 -1
- package/build/cjs/models/index.js +0 -1
- package/build/cjs/schema/validators/common.d.ts +6 -0
- package/build/cjs/schema/validators/common.js +6 -0
- package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.d.ts +1 -2
- package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.js +2 -5
- package/build/cjs/sub-blocks/HubspotForm/index.d.ts +1 -1
- package/build/cjs/sub-blocks/HubspotForm/index.js +5 -6
- package/build/cjs/sub-blocks/LayoutItem/LayoutItem.d.ts +1 -1
- package/build/cjs/sub-blocks/LayoutItem/LayoutItem.js +4 -4
- package/build/cjs/sub-blocks/LayoutItem/schema.d.ts +9 -0
- package/build/cjs/sub-blocks/LayoutItem/schema.js +2 -0
- package/build/cjs/sub-blocks/LayoutItem/utils.d.ts +2 -2
- package/build/cjs/sub-blocks/LayoutItem/utils.js +5 -5
- package/build/cjs/sub-blocks/MediaCard/schema.d.ts +6 -0
- package/build/cjs/utils/blocks.d.ts +1 -4
- package/build/cjs/utils/blocks.js +1 -11
- package/build/esm/blocks/Header/schema.d.ts +18 -0
- package/build/esm/blocks/HeaderSlider/schema.d.ts +6 -0
- package/build/esm/blocks/Media/schema.d.ts +12 -0
- package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +6 -0
- package/build/esm/blocks/Security/schema.d.ts +6 -0
- package/build/esm/blocks/Tabs/Tabs.js +2 -2
- package/build/esm/blocks/Tabs/schema.d.ts +6 -0
- package/build/esm/components/Anchor/Anchor.d.ts +2 -2
- package/build/esm/components/Anchor/Anchor.js +1 -1
- package/build/esm/components/Anchor/__tests__/Anchor.test.d.ts +1 -0
- package/build/esm/components/Anchor/__tests__/Anchor.test.js +18 -0
- package/build/esm/components/AnimateBlock/__tests__/AnimateBlock.test.d.ts +1 -0
- package/build/esm/components/AnimateBlock/__tests__/AnimateBlock.test.js +33 -0
- package/build/esm/components/Author/__tests__/Author.test.d.ts +1 -0
- package/build/esm/components/Author/__tests__/Author.test.js +46 -0
- package/build/esm/components/BackLink/__tests__/BackLink.test.d.ts +1 -0
- package/build/esm/components/BackLink/__tests__/BackLink.test.js +60 -0
- package/build/esm/components/BackgroundImage/BackgroundImage.js +2 -2
- package/build/esm/components/BlockBase/BlockBase.d.ts +2 -3
- package/build/esm/components/BlockBase/BlockBase.js +2 -4
- package/build/esm/components/BlockBase/__tests__/BlockBase.test.d.ts +1 -0
- package/build/esm/components/BlockBase/__tests__/BlockBase.test.js +41 -0
- package/build/esm/components/Button/Button.css +0 -3
- package/build/esm/components/Button/Button.js +4 -5
- package/build/esm/components/Button/__tests__/Button.test.d.ts +1 -0
- package/build/esm/components/Button/__tests__/Button.test.js +88 -0
- package/build/esm/components/ButtonTabs/__tests__/ButtonTabs.test.d.ts +1 -0
- package/build/esm/components/ButtonTabs/__tests__/ButtonTabs.test.js +55 -0
- package/build/esm/components/FullscreenImage/FullscreenImage.d.ts +3 -3
- package/build/esm/components/FullscreenImage/FullscreenImage.js +6 -6
- package/build/esm/components/FullscreenMedia/FullscreenMedia.d.ts +14 -0
- package/build/esm/components/FullscreenMedia/{FullScreenMedia.js → FullscreenMedia.js} +4 -4
- package/build/esm/components/Image/Image.d.ts +0 -1
- package/build/esm/components/Image/Image.js +2 -2
- package/build/esm/components/Media/FullscreenVideo/FullscreenVideo.d.ts +4 -0
- package/build/esm/components/Media/FullscreenVideo/FullscreenVideo.js +7 -0
- package/build/esm/components/Media/Image/Image.d.ts +1 -0
- package/build/esm/components/Media/Image/Image.js +12 -5
- package/build/esm/components/Media/Media.js +25 -4
- package/build/esm/components/Media/Video/Video.d.ts +1 -1
- package/build/esm/components/VideoBlock/VideoBlock.d.ts +4 -0
- package/build/esm/components/VideoBlock/VideoBlock.js +3 -3
- package/build/esm/components/index.d.ts +1 -1
- package/build/esm/components/index.js +1 -1
- package/build/esm/constructor-items.d.ts +1 -1
- package/build/esm/containers/Loadable/Loadable.d.ts +2 -2
- package/build/esm/containers/PageConstructor/PageConstructor.js +4 -6
- package/build/esm/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.js +2 -3
- package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.d.ts +1 -1
- package/build/esm/containers/PageConstructor/components/ConstructorItem/ConstructorItem.js +5 -5
- package/build/esm/context/innerContext/InnerContext.d.ts +1 -2
- package/build/esm/grid/Col/Col.d.ts +1 -1
- package/build/esm/hooks/useMetrika.js +7 -0
- package/build/esm/internal-typings/global.d.ts +16 -18
- package/build/esm/models/constructor-items/blocks.d.ts +11 -1
- package/build/esm/models/constructor-items/blocks.js +2 -0
- package/build/esm/models/constructor-items/common.d.ts +7 -3
- package/build/esm/models/constructor-items/sub-blocks.d.ts +4 -0
- package/build/esm/models/constructor.d.ts +1 -4
- package/build/esm/models/index.d.ts +0 -1
- package/build/esm/models/index.js +0 -1
- package/build/esm/schema/validators/common.d.ts +6 -0
- package/build/esm/schema/validators/common.js +6 -0
- package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.d.ts +1 -2
- package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.js +3 -6
- package/build/esm/sub-blocks/HubspotForm/index.d.ts +1 -1
- package/build/esm/sub-blocks/HubspotForm/index.js +6 -7
- package/build/esm/sub-blocks/LayoutItem/LayoutItem.d.ts +1 -1
- package/build/esm/sub-blocks/LayoutItem/LayoutItem.js +5 -5
- package/build/esm/sub-blocks/LayoutItem/schema.d.ts +9 -0
- package/build/esm/sub-blocks/LayoutItem/schema.js +2 -0
- package/build/esm/sub-blocks/LayoutItem/utils.d.ts +2 -2
- package/build/esm/sub-blocks/LayoutItem/utils.js +2 -2
- package/build/esm/sub-blocks/MediaCard/schema.d.ts +6 -0
- package/build/esm/utils/blocks.d.ts +1 -4
- package/build/esm/utils/blocks.js +0 -7
- package/package.json +6 -4
- package/server/models/constructor-items/blocks.d.ts +11 -1
- package/server/models/constructor-items/blocks.js +2 -0
- package/server/models/constructor-items/common.d.ts +7 -3
- package/server/models/constructor-items/sub-blocks.d.ts +4 -0
- package/server/models/constructor.d.ts +1 -4
- package/server/models/index.d.ts +0 -1
- package/server/models/index.js +0 -1
- package/server/utils/blocks.d.ts +1 -4
- package/server/utils/blocks.js +1 -11
- package/build/cjs/components/FullscreenMedia/FullScreenMedia.d.ts +0 -9
- package/build/cjs/customization/BlockDecoration.d.ts +0 -3
- package/build/cjs/customization/BlockDecoration.js +0 -22
- package/build/cjs/editor/Components/AddBlock/AddBlock.css +0 -82
- package/build/cjs/editor/Components/AddBlock/AddBlock.d.ts +0 -7
- package/build/cjs/editor/Components/AddBlock/AddBlock.js +0 -43
- package/build/cjs/editor/Components/EditBlock/EditBlock.css +0 -47
- package/build/cjs/editor/Components/EditBlock/EditBlock.d.ts +0 -4
- package/build/cjs/editor/Components/EditBlock/EditBlock.js +0 -32
- package/build/cjs/editor/Containers/Editor.d.ts +0 -2
- package/build/cjs/editor/Containers/Editor.js +0 -24
- package/build/cjs/editor/data/index.d.ts +0 -13
- package/build/cjs/editor/data/index.js +0 -27
- package/build/cjs/editor/data/previews/default-preview.d.ts +0 -3
- package/build/cjs/editor/data/previews/default-preview.js +0 -18
- package/build/cjs/editor/data/previews/header-block.d.ts +0 -3
- package/build/cjs/editor/data/previews/header-block.js +0 -19
- package/build/cjs/editor/index.d.ts +0 -2
- package/build/cjs/editor/index.js +0 -7
- package/build/cjs/editor/store/index.d.ts +0 -15
- package/build/cjs/editor/store/index.js +0 -32
- package/build/cjs/editor/store/reducer.d.ts +0 -41
- package/build/cjs/editor/store/reducer.js +0 -59
- package/build/cjs/editor/store/utils.d.ts +0 -13
- package/build/cjs/editor/store/utils.js +0 -34
- package/build/cjs/editor/styles/mixins.css +0 -0
- package/build/cjs/editor/styles/variables.css +0 -0
- package/build/cjs/editor/types/index.d.ts +0 -17
- package/build/cjs/editor/types/index.js +0 -2
- package/build/cjs/editor/utils/index.d.ts +0 -11
- package/build/cjs/editor/utils/index.js +0 -12
- package/build/cjs/models/customization.d.ts +0 -9
- package/build/cjs/models/customization.js +0 -2
- package/build/esm/components/FullscreenMedia/FullScreenMedia.d.ts +0 -10
- package/build/esm/customization/BlockDecoration.d.ts +0 -3
- package/build/esm/customization/BlockDecoration.js +0 -17
- package/build/esm/editor/Components/AddBlock/AddBlock.css +0 -82
- package/build/esm/editor/Components/AddBlock/AddBlock.d.ts +0 -8
- package/build/esm/editor/Components/AddBlock/AddBlock.js +0 -41
- package/build/esm/editor/Components/EditBlock/EditBlock.css +0 -47
- package/build/esm/editor/Components/EditBlock/EditBlock.d.ts +0 -5
- package/build/esm/editor/Components/EditBlock/EditBlock.js +0 -30
- package/build/esm/editor/Containers/Editor.d.ts +0 -2
- package/build/esm/editor/Containers/Editor.js +0 -20
- package/build/esm/editor/data/index.d.ts +0 -13
- package/build/esm/editor/data/index.js +0 -24
- package/build/esm/editor/data/previews/default-preview.d.ts +0 -3
- package/build/esm/editor/data/previews/default-preview.js +0 -15
- package/build/esm/editor/data/previews/header-block.d.ts +0 -3
- package/build/esm/editor/data/previews/header-block.js +0 -16
- package/build/esm/editor/index.d.ts +0 -2
- package/build/esm/editor/index.js +0 -2
- package/build/esm/editor/store/index.d.ts +0 -15
- package/build/esm/editor/store/index.js +0 -28
- package/build/esm/editor/store/reducer.d.ts +0 -41
- package/build/esm/editor/store/reducer.js +0 -55
- package/build/esm/editor/store/utils.d.ts +0 -13
- package/build/esm/editor/store/utils.js +0 -26
- package/build/esm/editor/styles/mixins.css +0 -0
- package/build/esm/editor/styles/variables.css +0 -0
- package/build/esm/editor/types/index.d.ts +0 -17
- package/build/esm/editor/utils/index.d.ts +0 -11
- package/build/esm/editor/utils/index.js +0 -6
- package/build/esm/models/customization.d.ts +0 -9
- package/server/models/customization.d.ts +0 -9
- package/server/models/customization.js +0 -2
- /package/build/{esm/editor/types/index.js → cjs/components/Anchor/__tests__/Anchor.test.d.ts} +0 -0
- /package/build/{esm/models/customization.js → cjs/components/AnimateBlock/__tests__/AnimateBlock.test.d.ts} +0 -0
- /package/build/cjs/components/FullscreenImage/{FullScreenImage.css → FullscreenImage.css} +0 -0
- /package/build/cjs/components/FullscreenMedia/{FullScreenMedia.css → FullscreenMedia.css} +0 -0
- /package/build/esm/components/FullscreenImage/{FullScreenImage.css → FullscreenImage.css} +0 -0
- /package/build/esm/components/FullscreenMedia/{FullScreenMedia.css → FullscreenMedia.css} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,58 +1,5 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [2.21.0](https://github.com/gravity-ui/page-constructor/compare/v2.20.1...v2.21.0) (2023-05-29)
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
### Features
|
|
7
|
-
|
|
8
|
-
* remove metrika goals from pixel events ([#355](https://github.com/gravity-ui/page-constructor/issues/355)) ([1a0ddae](https://github.com/gravity-ui/page-constructor/commit/1a0ddae92e4862665c64652c0da27cee9085d286))
|
|
9
|
-
|
|
10
|
-
## [2.20.1](https://github.com/gravity-ui/page-constructor/compare/v2.20.0...v2.20.1) (2023-05-29)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
### Bug Fixes
|
|
14
|
-
|
|
15
|
-
* editor scroll ([#352](https://github.com/gravity-ui/page-constructor/issues/352)) ([9fbbefe](https://github.com/gravity-ui/page-constructor/commit/9fbbefec311a0017eab7533b0b26bbddf97ff453))
|
|
16
|
-
|
|
17
|
-
## [2.20.0](https://github.com/gravity-ui/page-constructor/compare/v2.19.0...v2.20.0) (2023-05-25)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
### Features
|
|
21
|
-
|
|
22
|
-
* add page structure editor ([8d1dafe](https://github.com/gravity-ui/page-constructor/commit/8d1dafe964a9af3c7f5ad0e6039cccf2d24da64f))
|
|
23
|
-
* Edit mode ([#347](https://github.com/gravity-ui/page-constructor/issues/347)) ([8d1dafe](https://github.com/gravity-ui/page-constructor/commit/8d1dafe964a9af3c7f5ad0e6039cccf2d24da64f))
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
### Bug Fixes
|
|
27
|
-
|
|
28
|
-
* customization types import fix ([#350](https://github.com/gravity-ui/page-constructor/issues/350)) ([206306f](https://github.com/gravity-ui/page-constructor/commit/206306f95d87ae428538b27dca08f78cb4de9430))
|
|
29
|
-
|
|
30
|
-
## [2.19.0](https://github.com/gravity-ui/page-constructor/compare/v2.18.0...v2.19.0) (2023-05-23)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
### Features
|
|
34
|
-
|
|
35
|
-
* **Button:** add prop width ([#346](https://github.com/gravity-ui/page-constructor/issues/346)) ([f4b1ba8](https://github.com/gravity-ui/page-constructor/commit/f4b1ba85f56ef2de435bd91ae1fc35fbea0a177b))
|
|
36
|
-
|
|
37
|
-
## [2.18.0](https://github.com/gravity-ui/page-constructor/compare/v2.18.0...v2.18.0) (2023-05-15)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
### Features
|
|
41
|
-
|
|
42
|
-
* **HubspotForm:** add ref forwarding for HS form ([#332](https://github.com/gravity-ui/page-constructor/issues/332)) ([37b75d3](https://github.com/gravity-ui/page-constructor/commit/37b75d31c09e8dc061d718828bcccc72b037e106))
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
### Bug Fixes
|
|
46
|
-
|
|
47
|
-
* config gulpfile for tests ([a5cb59d](https://github.com/gravity-ui/page-constructor/commit/a5cb59d0bc1e3a8c09babed0c5ace9a2253416c3))
|
|
48
|
-
|
|
49
|
-
## [2.17.0](https://github.com/gravity-ui/page-constructor/compare/v2.16.0...v2.17.0) (2023-05-12)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
### Features
|
|
53
|
-
|
|
54
|
-
* drop rules overriding ([#303](https://github.com/gravity-ui/page-constructor/issues/303)) ([0c13398](https://github.com/gravity-ui/page-constructor/commit/0c1339885ce3b930ab9428b585aa6dd020b0d298))
|
|
55
|
-
|
|
56
3
|
## [2.16.0](https://github.com/gravity-ui/page-constructor/compare/v2.15.0...v2.16.0) (2023-05-11)
|
|
57
4
|
|
|
58
5
|
|
package/README.md
CHANGED
|
@@ -184,7 +184,7 @@ Sub-blocks are components that can be used in the block `children` property. In
|
|
|
184
184
|
- Add it to `enum` or `selectCases` in the `schema/index.ts` file.
|
|
185
185
|
|
|
186
186
|
6. In the block directory, add the `README.md` file with a description of input parameters.
|
|
187
|
-
7. In the block directory add storybook demo in `__stories__` folder.
|
|
187
|
+
7. In the block directory add storybook demo in `__stories__` folder. All demo content for story should be placed in `data.json` at story dir. The generic `Story` must accept the type of block props, otherwise incorrect block props will be displayed in Storybook.
|
|
188
188
|
|
|
189
189
|
### Themes
|
|
190
190
|
|
|
@@ -137,6 +137,12 @@ export declare const HeaderBackgroundProps: {
|
|
|
137
137
|
type: string;
|
|
138
138
|
})[];
|
|
139
139
|
};
|
|
140
|
+
fullScreen: {
|
|
141
|
+
type: string;
|
|
142
|
+
};
|
|
143
|
+
fullscreen: {
|
|
144
|
+
type: string;
|
|
145
|
+
};
|
|
140
146
|
};
|
|
141
147
|
};
|
|
142
148
|
export declare const HeaderProperties: {
|
|
@@ -424,6 +430,12 @@ export declare const HeaderProperties: {
|
|
|
424
430
|
type: string;
|
|
425
431
|
})[];
|
|
426
432
|
};
|
|
433
|
+
fullScreen: {
|
|
434
|
+
type: string;
|
|
435
|
+
};
|
|
436
|
+
fullscreen: {
|
|
437
|
+
type: string;
|
|
438
|
+
};
|
|
427
439
|
};
|
|
428
440
|
} | {
|
|
429
441
|
type: string;
|
|
@@ -757,6 +769,12 @@ export declare const HeaderBlock: {
|
|
|
757
769
|
type: string;
|
|
758
770
|
})[];
|
|
759
771
|
};
|
|
772
|
+
fullScreen: {
|
|
773
|
+
type: string;
|
|
774
|
+
};
|
|
775
|
+
fullscreen: {
|
|
776
|
+
type: string;
|
|
777
|
+
};
|
|
760
778
|
};
|
|
761
779
|
} | {
|
|
762
780
|
type: string;
|
|
@@ -131,6 +131,12 @@ export declare const Media: {
|
|
|
131
131
|
type: string;
|
|
132
132
|
})[];
|
|
133
133
|
};
|
|
134
|
+
fullScreen: {
|
|
135
|
+
type: string;
|
|
136
|
+
};
|
|
137
|
+
fullscreen: {
|
|
138
|
+
type: string;
|
|
139
|
+
};
|
|
134
140
|
};
|
|
135
141
|
};
|
|
136
142
|
export declare const MediaBlockBaseProps: {
|
|
@@ -608,6 +614,12 @@ export declare const MediaBlock: {
|
|
|
608
614
|
type: string;
|
|
609
615
|
})[];
|
|
610
616
|
};
|
|
617
|
+
fullScreen: {
|
|
618
|
+
type: string;
|
|
619
|
+
};
|
|
620
|
+
fullscreen: {
|
|
621
|
+
type: string;
|
|
622
|
+
};
|
|
611
623
|
};
|
|
612
624
|
};
|
|
613
625
|
description: {
|
|
@@ -2,7 +2,7 @@ import { ClassNameProps } from '../../models';
|
|
|
2
2
|
export declare const qaIdByDefault = "qa-anchor";
|
|
3
3
|
export interface AnchorProps extends ClassNameProps {
|
|
4
4
|
id: string;
|
|
5
|
-
|
|
5
|
+
dataQa?: string;
|
|
6
6
|
}
|
|
7
|
-
declare const Anchor: ({ id, className,
|
|
7
|
+
declare const Anchor: ({ id, className, dataQa }: AnchorProps) => JSX.Element;
|
|
8
8
|
export default Anchor;
|
|
@@ -7,5 +7,5 @@ const react_1 = tslib_1.__importDefault(require("react"));
|
|
|
7
7
|
const utils_1 = require("../../utils");
|
|
8
8
|
const b = (0, utils_1.block)('Anchor');
|
|
9
9
|
exports.qaIdByDefault = 'qa-anchor';
|
|
10
|
-
const Anchor = ({ id, className,
|
|
10
|
+
const Anchor = ({ id, className, dataQa }) => (react_1.default.createElement("div", { id: id, className: b(null, className), "data-qa": dataQa || exports.qaIdByDefault }));
|
|
11
11
|
exports.default = Anchor;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
+
const react_2 = require("@testing-library/react");
|
|
6
|
+
const Anchor_1 = tslib_1.__importDefault(require("../Anchor"));
|
|
7
|
+
const testId = 'anchor';
|
|
8
|
+
const anchorId = 'anchorId';
|
|
9
|
+
describe('Anchor', () => {
|
|
10
|
+
test('Has id', async () => {
|
|
11
|
+
(0, react_2.render)(react_1.default.createElement(Anchor_1.default, { id: anchorId, dataQa: testId }));
|
|
12
|
+
const anchor = react_2.screen.getByTestId(testId);
|
|
13
|
+
expect(anchor).toHaveAttribute('id', anchorId);
|
|
14
|
+
});
|
|
15
|
+
test('Has custom class', async () => {
|
|
16
|
+
const className = 'custom-anchor-class';
|
|
17
|
+
(0, react_2.render)(react_1.default.createElement(Anchor_1.default, { id: anchorId, className: className, dataQa: testId }));
|
|
18
|
+
const anchor = react_2.screen.getByTestId(testId);
|
|
19
|
+
expect(anchor).toHaveClass(className);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
+
const react_2 = require("@testing-library/react");
|
|
6
|
+
const user_event_1 = tslib_1.__importDefault(require("@testing-library/user-event"));
|
|
7
|
+
const AnimateBlock_1 = tslib_1.__importDefault(require("../AnimateBlock"));
|
|
8
|
+
const qaId = 'animate-block';
|
|
9
|
+
describe('AnimateBlock', () => {
|
|
10
|
+
test('render AnimateBlock by default', async () => {
|
|
11
|
+
(0, react_2.render)(react_1.default.createElement(AnimateBlock_1.default, { qa: qaId }));
|
|
12
|
+
const component = react_2.screen.getByTestId(qaId);
|
|
13
|
+
expect(component).toBeInTheDocument();
|
|
14
|
+
});
|
|
15
|
+
test('add className', () => {
|
|
16
|
+
const className = 'my-class';
|
|
17
|
+
(0, react_2.render)(react_1.default.createElement(AnimateBlock_1.default, { qa: qaId, className: className }));
|
|
18
|
+
const component = react_2.screen.getByTestId(qaId);
|
|
19
|
+
expect(component).toHaveClass(className);
|
|
20
|
+
});
|
|
21
|
+
test('use passed style', () => {
|
|
22
|
+
const style = { color: 'red' };
|
|
23
|
+
(0, react_2.render)(react_1.default.createElement(AnimateBlock_1.default, { style: style, qa: qaId }));
|
|
24
|
+
const component = react_2.screen.getByTestId(qaId);
|
|
25
|
+
expect(component).toHaveStyle(style);
|
|
26
|
+
});
|
|
27
|
+
test('call onScroll', async () => {
|
|
28
|
+
const onScroll = jest.fn();
|
|
29
|
+
const user = user_event_1.default.setup();
|
|
30
|
+
(0, react_2.render)(react_1.default.createElement("div", { style: { paddingTop: 100000 } },
|
|
31
|
+
react_1.default.createElement(AnimateBlock_1.default, { onScroll: onScroll, qa: qaId })));
|
|
32
|
+
const component = react_2.screen.getByTestId(qaId);
|
|
33
|
+
await user.hover(component);
|
|
34
|
+
expect(onScroll).toHaveBeenCalledTimes(1);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
+
const react_2 = require("@testing-library/react");
|
|
6
|
+
const models_1 = require("../../../models");
|
|
7
|
+
const Author_1 = tslib_1.__importDefault(require("../Author"));
|
|
8
|
+
const testId = 'author';
|
|
9
|
+
const author = {
|
|
10
|
+
firstName: 'John',
|
|
11
|
+
secondName: 'Doe',
|
|
12
|
+
description: 'Web designer',
|
|
13
|
+
avatar: 'https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/img-gray.png',
|
|
14
|
+
};
|
|
15
|
+
describe('Author', () => {
|
|
16
|
+
test('Render author by default', async () => {
|
|
17
|
+
(0, react_2.render)(react_1.default.createElement(Author_1.default, { author: author, dataQa: testId }));
|
|
18
|
+
const object = react_2.screen.getByTestId(testId);
|
|
19
|
+
expect(object).toBeInTheDocument();
|
|
20
|
+
});
|
|
21
|
+
test('Has full name', async () => {
|
|
22
|
+
const name = `${author.firstName} ${author.secondName}`;
|
|
23
|
+
(0, react_2.render)(react_1.default.createElement(Author_1.default, { author: author, dataQa: testId }));
|
|
24
|
+
const object = react_2.screen.getByText(name);
|
|
25
|
+
expect(object).toBeInTheDocument();
|
|
26
|
+
});
|
|
27
|
+
test('Has first name only', async () => {
|
|
28
|
+
const name = author.firstName;
|
|
29
|
+
(0, react_2.render)(react_1.default.createElement(Author_1.default, { author: Object.assign(Object.assign({}, author), { secondName: '' }), dataQa: testId }));
|
|
30
|
+
const object = react_2.screen.getByText(name);
|
|
31
|
+
expect(object).toBeInTheDocument();
|
|
32
|
+
});
|
|
33
|
+
test('Has avatar', async () => {
|
|
34
|
+
(0, react_2.render)(react_1.default.createElement(Author_1.default, { author: author, dataQa: testId }));
|
|
35
|
+
const avatar = react_2.screen.getByRole('img');
|
|
36
|
+
expect(avatar).toBeInTheDocument();
|
|
37
|
+
expect(avatar).toHaveAttribute('src', author.avatar);
|
|
38
|
+
});
|
|
39
|
+
test('Has description', async () => {
|
|
40
|
+
(0, react_2.render)(react_1.default.createElement(Author_1.default, { author: author, dataQa: testId }));
|
|
41
|
+
const object = react_2.screen.getByText(author.description);
|
|
42
|
+
expect(object).toBeInTheDocument();
|
|
43
|
+
});
|
|
44
|
+
test.each(new Array(models_1.AuthorType.Column, models_1.AuthorType.Line))('Render with given "%s" type', (type) => {
|
|
45
|
+
(0, react_2.render)(react_1.default.createElement(Author_1.default, { author: author, dataQa: testId, type: type }));
|
|
46
|
+
const object = react_2.screen.getByTestId(testId);
|
|
47
|
+
expect(object).toHaveClass(`pc-author_type_${type}`);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
+
const react_2 = require("@testing-library/react");
|
|
6
|
+
const user_event_1 = tslib_1.__importDefault(require("@testing-library/user-event"));
|
|
7
|
+
const locationContext_1 = require("../../../context/locationContext");
|
|
8
|
+
const BackLink_1 = tslib_1.__importDefault(require("../BackLink"));
|
|
9
|
+
const backLinkProps = {
|
|
10
|
+
url: '#',
|
|
11
|
+
title: 'Button Title',
|
|
12
|
+
theme: 'default',
|
|
13
|
+
size: 's',
|
|
14
|
+
className: 'customClassName',
|
|
15
|
+
shouldHandleBackAction: true,
|
|
16
|
+
onClick: () => { },
|
|
17
|
+
};
|
|
18
|
+
describe('BackLink', () => {
|
|
19
|
+
test('Default render', async () => {
|
|
20
|
+
(0, react_2.render)(react_1.default.createElement(BackLink_1.default, Object.assign({}, backLinkProps)));
|
|
21
|
+
const backLink = react_2.screen.getByRole('button');
|
|
22
|
+
expect(backLink).toBeInTheDocument();
|
|
23
|
+
});
|
|
24
|
+
test('Has custom class', async () => {
|
|
25
|
+
(0, react_2.render)(react_1.default.createElement(BackLink_1.default, Object.assign({}, backLinkProps)));
|
|
26
|
+
const backLink = react_2.screen.getByRole('button');
|
|
27
|
+
expect(backLink).toHaveClass(backLinkProps.className);
|
|
28
|
+
});
|
|
29
|
+
test('Should render <a /> tag', async () => {
|
|
30
|
+
(0, react_2.render)(react_1.default.createElement(BackLink_1.default, Object.assign({}, backLinkProps, { shouldHandleBackAction: false })));
|
|
31
|
+
const backLink = react_2.screen.getByRole('link');
|
|
32
|
+
expect(backLink).toBeVisible();
|
|
33
|
+
expect(backLink).toHaveAttribute('href', backLinkProps.url);
|
|
34
|
+
});
|
|
35
|
+
test('Should render title', async () => {
|
|
36
|
+
(0, react_2.render)(react_1.default.createElement(BackLink_1.default, Object.assign({}, backLinkProps)));
|
|
37
|
+
const backLink = react_2.screen.getByText(backLinkProps.title);
|
|
38
|
+
expect(backLink).toBeInTheDocument();
|
|
39
|
+
});
|
|
40
|
+
test('Call onClick', async () => {
|
|
41
|
+
const user = user_event_1.default.setup();
|
|
42
|
+
const handleClick = jest.fn();
|
|
43
|
+
(0, react_2.render)(react_1.default.createElement(locationContext_1.LocationContext.Provider, { value: { history: { push: jest.fn() } } },
|
|
44
|
+
react_1.default.createElement(BackLink_1.default, Object.assign({}, backLinkProps, { onClick: handleClick }))));
|
|
45
|
+
const backLink = react_2.screen.getByRole('button');
|
|
46
|
+
await user.click(backLink);
|
|
47
|
+
expect(handleClick).toHaveBeenCalledTimes(1);
|
|
48
|
+
});
|
|
49
|
+
test.each(new Array('s', 'm', 'l', 'xl'))('Render with given "%s" size', (size) => {
|
|
50
|
+
(0, react_2.render)(react_1.default.createElement(BackLink_1.default, Object.assign({}, backLinkProps, { size: size })));
|
|
51
|
+
const backLink = react_2.screen.getByRole('button');
|
|
52
|
+
expect(backLink).toHaveClass(`yc-button_size_${size}`);
|
|
53
|
+
});
|
|
54
|
+
test.each(new Array('default', 'special'))('Render with given "%s" theme', (theme) => {
|
|
55
|
+
const matchView = {
|
|
56
|
+
default: 'flat-secondary',
|
|
57
|
+
special: 'flat-contrast',
|
|
58
|
+
};
|
|
59
|
+
(0, react_2.render)(react_1.default.createElement(BackLink_1.default, Object.assign({}, backLinkProps, { theme: theme })));
|
|
60
|
+
const backLink = react_2.screen.getByRole('button');
|
|
61
|
+
expect(backLink).toHaveClass(`yc-button_view_${matchView[theme]}`);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
@@ -6,8 +6,8 @@ const utils_1 = require("../../utils");
|
|
|
6
6
|
const Image_1 = tslib_1.__importDefault(require("../Image/Image"));
|
|
7
7
|
const b = (0, utils_1.block)('storage-background-image');
|
|
8
8
|
const BackgroundImage = (props) => {
|
|
9
|
-
const { children, src, desktop, className, imageClassName, style, hide
|
|
10
|
-
return (react_1.default.createElement("div", { className: b(null, className), style: style
|
|
9
|
+
const { children, src, desktop, className, imageClassName, style, hide } = props;
|
|
10
|
+
return (react_1.default.createElement("div", { className: b(null, className), style: style },
|
|
11
11
|
(src || desktop) && !hide && react_1.default.createElement(Image_1.default, Object.assign({}, props, { className: b('img', imageClassName) })),
|
|
12
12
|
children && react_1.default.createElement("div", { className: b('container') }, children)));
|
|
13
13
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
declare const BlockBase: (props: PropsWithChildren<BlockBaseProps & ClassNameProps>) => JSX.Element;
|
|
1
|
+
import { BlockBaseProps, ClassNameProps, WithChildren } from '../../models';
|
|
2
|
+
declare const BlockBase: (props: WithChildren<BlockBaseProps & ClassNameProps>) => JSX.Element;
|
|
4
3
|
export default BlockBase;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
-
const BlockDecoration_1 = require("../../customization/BlockDecoration");
|
|
6
5
|
const grid_1 = require("../../grid");
|
|
7
6
|
const utils_1 = require("../../utils");
|
|
8
7
|
const Anchor_1 = tslib_1.__importDefault(require("../Anchor/Anchor"));
|
|
@@ -10,8 +9,7 @@ const b = (0, utils_1.block)('block-base');
|
|
|
10
9
|
const BlockBase = (props) => {
|
|
11
10
|
const { anchor, visible, children, className, resetPaddings, qa } = props;
|
|
12
11
|
return (react_1.default.createElement(grid_1.Col, { className: b({ ['reset-paddings']: resetPaddings }, className), visible: visible, reset: true, dataQa: qa },
|
|
13
|
-
react_1.default.createElement(
|
|
14
|
-
|
|
15
|
-
children)));
|
|
12
|
+
anchor && react_1.default.createElement(Anchor_1.default, { id: anchor.url, className: b('anchor') }),
|
|
13
|
+
children));
|
|
16
14
|
};
|
|
17
15
|
exports.default = BlockBase;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
+
const react_2 = require("@testing-library/react");
|
|
6
|
+
const Anchor_1 = require("../../../components/Anchor/Anchor");
|
|
7
|
+
const grid_1 = require("../../../grid");
|
|
8
|
+
const BlockBase_1 = tslib_1.__importDefault(require("../BlockBase"));
|
|
9
|
+
const qaId = 'block-base-component';
|
|
10
|
+
describe('BlockBase', () => {
|
|
11
|
+
test('render component by default', async () => {
|
|
12
|
+
(0, react_2.render)(react_1.default.createElement(BlockBase_1.default, { qa: qaId }));
|
|
13
|
+
const component = react_2.screen.getByTestId(qaId);
|
|
14
|
+
expect(component).toBeInTheDocument();
|
|
15
|
+
expect(component).toBeVisible();
|
|
16
|
+
expect(component).not.toBeDisabled();
|
|
17
|
+
});
|
|
18
|
+
test('add className', () => {
|
|
19
|
+
const className = 'my-class';
|
|
20
|
+
(0, react_2.render)(react_1.default.createElement(BlockBase_1.default, { qa: qaId, className: className }));
|
|
21
|
+
const component = react_2.screen.getByTestId(qaId);
|
|
22
|
+
expect(component).toHaveClass(className);
|
|
23
|
+
});
|
|
24
|
+
test('should reset paddings', () => {
|
|
25
|
+
(0, react_2.render)(react_1.default.createElement(BlockBase_1.default, { qa: qaId, resetPaddings: true }));
|
|
26
|
+
const component = react_2.screen.getByTestId(qaId);
|
|
27
|
+
expect(component).toHaveClass('pc-block-base_reset-paddings');
|
|
28
|
+
});
|
|
29
|
+
test.each(new Array(...Object.values(grid_1.GridColumnSize)))('render with given "%s" size', (size) => {
|
|
30
|
+
(0, react_2.render)(react_1.default.createElement(BlockBase_1.default, { qa: qaId, visible: size }));
|
|
31
|
+
const component = react_2.screen.getByTestId(qaId);
|
|
32
|
+
expect(component).toHaveClass(`d-${size}-block`);
|
|
33
|
+
});
|
|
34
|
+
test('should have anchor', () => {
|
|
35
|
+
const anchor = {
|
|
36
|
+
text: 'anchor',
|
|
37
|
+
url: 'https://github.com/gravity-ui/',
|
|
38
|
+
};
|
|
39
|
+
(0, react_2.render)(react_1.default.createElement(BlockBase_1.default, { anchor: anchor }));
|
|
40
|
+
const component = react_2.screen.getByTestId(Anchor_1.qaIdByDefault);
|
|
41
|
+
expect(component).toBeInTheDocument();
|
|
42
|
+
expect(component).toHaveAttribute('id', anchor.url);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -15,7 +15,7 @@ const b = (0, utils_1.block)('button-block');
|
|
|
15
15
|
const Button = (props) => {
|
|
16
16
|
const handleMetrika = (0, useMetrika_1.useMetrika)();
|
|
17
17
|
const { lang, tld } = (0, react_1.useContext)(localeContext_1.LocaleContext);
|
|
18
|
-
const { className, metrikaGoals, pixelEvents, analyticsEvents, size = 'l', theme = 'normal', url, img, onClick: onClickOrigin, text
|
|
18
|
+
const { className, metrikaGoals, pixelEvents, analyticsEvents, size = 'l', theme = 'normal', url, img, onClick: onClickOrigin, text } = props, rest = tslib_1.__rest(props, ["className", "metrikaGoals", "pixelEvents", "analyticsEvents", "size", "theme", "url", "img", "onClick", "text"]);
|
|
19
19
|
const defaultImgPosition = 'left';
|
|
20
20
|
const handleAnalytics = (0, hooks_1.useAnalytics)(models_1.DefaultEventNames.Button, url);
|
|
21
21
|
const onClick = (0, react_1.useCallback)((e) => {
|
|
@@ -25,13 +25,12 @@ const Button = (props) => {
|
|
|
25
25
|
onClickOrigin(e);
|
|
26
26
|
}
|
|
27
27
|
}, [handleMetrika, metrikaGoals, pixelEvents, handleAnalytics, analyticsEvents, onClickOrigin]);
|
|
28
|
-
const buttonModifiers = { size, theme, width };
|
|
29
28
|
const buttonImg = img instanceof Object
|
|
30
29
|
? { url: img.url, position: img.position || defaultImgPosition, alt: img.alt }
|
|
31
30
|
: { url: img, position: defaultImgPosition };
|
|
32
31
|
const buttonClass = img
|
|
33
|
-
? b(
|
|
34
|
-
: b(
|
|
32
|
+
? b({ position: buttonImg.position, size, theme }, className)
|
|
33
|
+
: b({ size, theme }, className);
|
|
35
34
|
const buttonProps = Object.assign(Object.assign({}, rest), { onClick });
|
|
36
35
|
if (theme === 'app-store' || theme === 'google-play') {
|
|
37
36
|
const platform = theme === 'app-store' ? uikit_1.Platform.IOS : uikit_1.Platform.ANDROID;
|
|
@@ -44,7 +43,7 @@ const Button = (props) => {
|
|
|
44
43
|
image = undefined;
|
|
45
44
|
}
|
|
46
45
|
const buttonTheme = theme === 'scale' ? 'accent' : theme;
|
|
47
|
-
return (react_1.default.createElement(uikit_1.Button, Object.assign({ className: buttonClass, view: (0, utils_2.toCommonView)(buttonTheme), size: (0, utils_2.toCommonSize)(size), href: url ? (0, utils_1.setUrlTld)(url, tld) : undefined
|
|
46
|
+
return (react_1.default.createElement(uikit_1.Button, Object.assign({ className: buttonClass, view: (0, utils_2.toCommonView)(buttonTheme), size: (0, utils_2.toCommonSize)(size), href: url ? (0, utils_1.setUrlTld)(url, tld) : undefined }, buttonProps),
|
|
48
47
|
icon && buttonImg.position === 'left' ? icon : null,
|
|
49
48
|
react_1.default.createElement("span", { className: b('content') },
|
|
50
49
|
image && buttonImg.position === 'left' ? image : null,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
+
const react_2 = require("@testing-library/react");
|
|
6
|
+
const user_event_1 = tslib_1.__importDefault(require("@testing-library/user-event"));
|
|
7
|
+
const Button_1 = tslib_1.__importDefault(require("../Button"));
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
const qaId = 'button-component';
|
|
10
|
+
const buttonProps = {
|
|
11
|
+
text: 'Button Text',
|
|
12
|
+
url: 'https://github.com/gravity-ui/',
|
|
13
|
+
target: '_blank',
|
|
14
|
+
img: {
|
|
15
|
+
url: 'https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_1_light.svg',
|
|
16
|
+
position: 'left',
|
|
17
|
+
alt: 'alt-text',
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
const buttonViews = [
|
|
21
|
+
'normal',
|
|
22
|
+
'action',
|
|
23
|
+
'outlined',
|
|
24
|
+
'outlined-info',
|
|
25
|
+
'outlined-danger',
|
|
26
|
+
'raised',
|
|
27
|
+
'flat',
|
|
28
|
+
'flat-info',
|
|
29
|
+
'flat-danger',
|
|
30
|
+
'flat-secondary',
|
|
31
|
+
'normal-contrast',
|
|
32
|
+
'outlined-contrast',
|
|
33
|
+
'flat-contrast',
|
|
34
|
+
'github',
|
|
35
|
+
'scale',
|
|
36
|
+
'monochrome',
|
|
37
|
+
];
|
|
38
|
+
describe('Button', () => {
|
|
39
|
+
test('render button by default', async () => {
|
|
40
|
+
(0, react_2.render)(react_1.default.createElement(Button_1.default, { text: buttonProps.text }));
|
|
41
|
+
const button = react_2.screen.getByRole('button');
|
|
42
|
+
expect(button).toBeInTheDocument();
|
|
43
|
+
expect(button).toBeVisible();
|
|
44
|
+
expect(button).not.toBeDisabled();
|
|
45
|
+
});
|
|
46
|
+
test('should render <a /> tag', async () => {
|
|
47
|
+
(0, react_2.render)(react_1.default.createElement(Button_1.default, { text: buttonProps.text, url: buttonProps.url, target: buttonProps.target }));
|
|
48
|
+
const button = react_2.screen.getByRole('link');
|
|
49
|
+
expect(button).toBeVisible();
|
|
50
|
+
expect(button).toHaveAttribute('href', buttonProps.url);
|
|
51
|
+
expect(button).toHaveAttribute('target', buttonProps.target);
|
|
52
|
+
});
|
|
53
|
+
test('call onClick', async () => {
|
|
54
|
+
const user = user_event_1.default.setup();
|
|
55
|
+
const handleOnClick = jest.fn();
|
|
56
|
+
(0, react_2.render)(react_1.default.createElement(Button_1.default, { text: buttonProps.text, onClick: handleOnClick }));
|
|
57
|
+
const button = react_2.screen.getByRole('button');
|
|
58
|
+
await user.click(button);
|
|
59
|
+
expect(handleOnClick).toHaveBeenCalledTimes(1);
|
|
60
|
+
});
|
|
61
|
+
test.each(new Array('s', 'm', 'l', 'xl'))('render with given "%s" size', (size) => {
|
|
62
|
+
(0, react_2.render)(react_1.default.createElement(Button_1.default, { text: buttonProps.text, size: size, qa: qaId }));
|
|
63
|
+
const button = react_2.screen.getByTestId(qaId);
|
|
64
|
+
expect(button).toHaveClass(`pc-button-block_size_${size}`);
|
|
65
|
+
});
|
|
66
|
+
test.each(new Array(...buttonViews))('render with given "%s" view', (theme) => {
|
|
67
|
+
(0, react_2.render)(react_1.default.createElement(Button_1.default, { text: buttonProps.text, theme: theme, qa: qaId }));
|
|
68
|
+
const button = react_2.screen.getByTestId(qaId);
|
|
69
|
+
expect(button).toHaveClass(`pc-button-block_theme_${theme}`);
|
|
70
|
+
});
|
|
71
|
+
test('add className', () => {
|
|
72
|
+
const className = 'my-class';
|
|
73
|
+
(0, react_2.render)(react_1.default.createElement(Button_1.default, { text: buttonProps.text, className: className, qa: qaId }));
|
|
74
|
+
const button = react_2.screen.getByTestId(qaId);
|
|
75
|
+
expect(button).toHaveClass(className);
|
|
76
|
+
});
|
|
77
|
+
test('should render icon', () => {
|
|
78
|
+
(0, react_2.render)(react_1.default.createElement(Button_1.default, { text: buttonProps.text, img: buttonProps.img }));
|
|
79
|
+
const button = react_2.screen.getByRole('button');
|
|
80
|
+
const iconComponent = react_2.screen.getByRole('img');
|
|
81
|
+
expect(iconComponent).toBeVisible();
|
|
82
|
+
expect(button).toContainElement(iconComponent);
|
|
83
|
+
});
|
|
84
|
+
test('should render github icon', () => {
|
|
85
|
+
(0, react_2.render)(react_1.default.createElement(Button_1.default, { text: buttonProps.text, img: buttonProps.img, theme: "github" }));
|
|
86
|
+
const button = react_2.screen.getByRole('button');
|
|
87
|
+
const iconComponent = react_2.screen.getByTestId(utils_1.ICON_QA);
|
|
88
|
+
expect(iconComponent).toBeVisible();
|
|
89
|
+
expect(button).toContainElement(iconComponent);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|