@treely/strapi-slices 1.1.0 → 2.1.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.
- package/dist/components/SliceRenderer/SliceRenderer.d.ts +7 -6
- package/dist/index.d.ts +36 -0
- package/dist/strapi-slices.cjs.development.js +7 -9
- package/dist/strapi-slices.cjs.development.js.map +1 -1
- package/dist/strapi-slices.cjs.production.min.js +1 -1
- package/dist/strapi-slices.cjs.production.min.js.map +1 -1
- package/dist/strapi-slices.esm.js +7 -9
- package/dist/strapi-slices.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/SliceRenderer/SliceRenderer.test.tsx +6 -4
- package/src/components/SliceRenderer/SliceRenderer.tsx +11 -12
- package/src/index.tsx +74 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, screen } from '../../test/testUtils';
|
|
3
3
|
import { SliceRenderer } from '.';
|
|
4
|
-
import { SliceRendererProps } from './SliceRenderer';
|
|
4
|
+
import { CustomSliceProps, SliceRendererProps } from './SliceRenderer';
|
|
5
5
|
|
|
6
6
|
const defaultProps: SliceRendererProps = {
|
|
7
7
|
slices: [],
|
|
@@ -35,13 +35,15 @@ describe('The SliceRenderer component', () => {
|
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
it('renders a custom slice if given', () => {
|
|
38
|
-
const CustomSlice = () =>
|
|
38
|
+
const CustomSlice = ({ id }: CustomSliceProps): JSX.Element => (
|
|
39
|
+
<div>Custom slice {id}</div>
|
|
40
|
+
);
|
|
39
41
|
|
|
40
42
|
setup({
|
|
41
43
|
slices: [{ id: 1, __component: 'custom.slice' }],
|
|
42
|
-
|
|
44
|
+
CustomSlice,
|
|
43
45
|
});
|
|
44
46
|
|
|
45
|
-
expect(screen.getByText('Custom slice')).toBeInTheDocument();
|
|
47
|
+
expect(screen.getByText('Custom slice custom.slice')).toBeInTheDocument();
|
|
46
48
|
});
|
|
47
49
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import FullWidthImage from '../../slices/FullWidthImage';
|
|
3
3
|
import Hero from '../../slices/Hero';
|
|
4
4
|
import IconGrid from '../../slices/IconGrid';
|
|
@@ -40,9 +40,9 @@ import Comparison from '../../slices/Comparison';
|
|
|
40
40
|
import Locale from '../../models/Locale';
|
|
41
41
|
import { ContextProvider } from '../ContextProvider';
|
|
42
42
|
|
|
43
|
-
interface CustomSliceProps {
|
|
43
|
+
export interface CustomSliceProps {
|
|
44
44
|
slice: any;
|
|
45
|
-
|
|
45
|
+
id: string;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
export interface SliceRendererProps {
|
|
@@ -51,7 +51,7 @@ export interface SliceRendererProps {
|
|
|
51
51
|
projects: PortfolioProject[];
|
|
52
52
|
customerStories: IStrapiData<StrapiCustomerStory>[];
|
|
53
53
|
locale?: Locale;
|
|
54
|
-
|
|
54
|
+
CustomSlice?: ({ slice, id }: CustomSliceProps) => JSX.Element;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
export const SliceRenderer = ({
|
|
@@ -60,7 +60,7 @@ export const SliceRenderer = ({
|
|
|
60
60
|
projects,
|
|
61
61
|
customerStories,
|
|
62
62
|
locale = 'en',
|
|
63
|
-
|
|
63
|
+
CustomSlice,
|
|
64
64
|
}: SliceRendererProps): JSX.Element => (
|
|
65
65
|
<ContextProvider locale={locale}>
|
|
66
66
|
{slices.map((slice: any) => {
|
|
@@ -295,14 +295,13 @@ export const SliceRenderer = ({
|
|
|
295
295
|
/>
|
|
296
296
|
);
|
|
297
297
|
default:
|
|
298
|
-
|
|
299
|
-
(additionalSlice) => additionalSlice.id === slice.__component
|
|
300
|
-
);
|
|
301
|
-
if (additionalSlice) {
|
|
298
|
+
if (CustomSlice) {
|
|
302
299
|
return (
|
|
303
|
-
<
|
|
304
|
-
{
|
|
305
|
-
|
|
300
|
+
<CustomSlice
|
|
301
|
+
key={`${slice.__component}-${slice.id}`}
|
|
302
|
+
id={slice.__component}
|
|
303
|
+
slice={slice}
|
|
304
|
+
/>
|
|
306
305
|
);
|
|
307
306
|
}
|
|
308
307
|
|
package/src/index.tsx
CHANGED
|
@@ -1 +1,75 @@
|
|
|
1
|
+
import IStrapi from './models/strapi/IStrapi';
|
|
2
|
+
import IStrapiData from './models/strapi/IStrapiData';
|
|
3
|
+
import IStrapiResponse from './models/strapi/IStrapiResponse';
|
|
4
|
+
import StrapiAuthor from './models/strapi/StrapiAuthor';
|
|
5
|
+
import StrapiAvatarWithName from './models/strapi/StrapiAvatarWithName';
|
|
6
|
+
import StrapiBanner from './models/strapi/StrapiBanner';
|
|
7
|
+
import StrapiBlogPost from './models/strapi/StrapiBlogPost';
|
|
8
|
+
import StrapiButtonWithVariant from './models/strapi/StrapiButtonWithVariant';
|
|
9
|
+
import StrapiCategory from './models/strapi/StrapiCategory';
|
|
10
|
+
import StrapiContactArea from './models/strapi/StrapiContactArea';
|
|
11
|
+
import StrapiCustomerStory from './models/strapi/StrapiCustomerStory';
|
|
12
|
+
import StrapiDefaultHeader from './models/strapi/StrapiDefaultHeader';
|
|
13
|
+
import StrapiGlobal from './models/strapi/StrapiGlobal';
|
|
14
|
+
import StrapiGlossaryItem from './models/strapi/StrapiGlossaryItem';
|
|
15
|
+
import StrapiHeroCard from './models/strapi/StrapiHeroCard';
|
|
16
|
+
import StrapiImage from './models/strapi/StrapiImage';
|
|
17
|
+
import StrapiImageFormat from './models/strapi/StrapiImageFormat';
|
|
18
|
+
import StrapiImageWithLink from './models/strapi/StrapiImageWithLink';
|
|
19
|
+
import StrapiLink from './models/strapi/StrapiLink';
|
|
20
|
+
import StrapiLinkList from './models/strapi/StrapiLinkList';
|
|
21
|
+
import StrapiLinkPage from './models/strapi/StrapiLinkPage';
|
|
22
|
+
import StrapiLinkWithIcon from './models/strapi/StrapiLinkWithIcon';
|
|
23
|
+
import StrapiLocalization from './models/strapi/StrapiLocalization';
|
|
24
|
+
import StrapiMedia from './models/strapi/StrapiMedia';
|
|
25
|
+
import StrapiMetadata from './models/strapi/StrapiMetadata';
|
|
26
|
+
import StrapiNavMenu from './models/strapi/StrapiNavMenu';
|
|
27
|
+
import StrapiPage from './models/strapi/StrapiPage';
|
|
28
|
+
import StrapiPortfolio from './models/strapi/StrapiPortfolio';
|
|
29
|
+
import StrapiPortfolioCard from './models/strapi/StrapiPortfolioCard';
|
|
30
|
+
import StrapiProject from './models/strapi/StrapiProject';
|
|
31
|
+
import StrapiProjectCard from './models/strapi/StrapiProjectCard';
|
|
32
|
+
import StrapiQuoteCard from './models/strapi/StrapiQuoteCard';
|
|
33
|
+
import StrapiShapesCard from './models/strapi/StrapiShapesCard';
|
|
34
|
+
import StrapiTextCardWithIcons from './models/strapi/StrapiTextCardWithIcons';
|
|
35
|
+
import StrapiTopBanner from './models/strapi/StrapiTopBanner';
|
|
36
|
+
|
|
1
37
|
export * from './components/SliceRenderer';
|
|
38
|
+
|
|
39
|
+
export type {
|
|
40
|
+
IStrapi,
|
|
41
|
+
IStrapiData,
|
|
42
|
+
IStrapiResponse,
|
|
43
|
+
StrapiAuthor,
|
|
44
|
+
StrapiAvatarWithName,
|
|
45
|
+
StrapiBanner,
|
|
46
|
+
StrapiBlogPost,
|
|
47
|
+
StrapiButtonWithVariant,
|
|
48
|
+
StrapiCategory,
|
|
49
|
+
StrapiContactArea,
|
|
50
|
+
StrapiCustomerStory,
|
|
51
|
+
StrapiDefaultHeader,
|
|
52
|
+
StrapiGlobal,
|
|
53
|
+
StrapiGlossaryItem,
|
|
54
|
+
StrapiHeroCard,
|
|
55
|
+
StrapiImage,
|
|
56
|
+
StrapiImageFormat,
|
|
57
|
+
StrapiImageWithLink,
|
|
58
|
+
StrapiLink,
|
|
59
|
+
StrapiLinkList,
|
|
60
|
+
StrapiLinkPage,
|
|
61
|
+
StrapiLinkWithIcon,
|
|
62
|
+
StrapiLocalization,
|
|
63
|
+
StrapiMedia,
|
|
64
|
+
StrapiMetadata,
|
|
65
|
+
StrapiNavMenu,
|
|
66
|
+
StrapiPage,
|
|
67
|
+
StrapiPortfolio,
|
|
68
|
+
StrapiPortfolioCard,
|
|
69
|
+
StrapiProject,
|
|
70
|
+
StrapiProjectCard,
|
|
71
|
+
StrapiQuoteCard,
|
|
72
|
+
StrapiShapesCard,
|
|
73
|
+
StrapiTextCardWithIcons,
|
|
74
|
+
StrapiTopBanner,
|
|
75
|
+
};
|