@sitecore-jss/sitecore-jss-react 22.0.0-canary.2 → 22.0.0-canary.20
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/cjs/components/FEaaSComponent.js +73 -56
- package/dist/cjs/components/PlaceholderCommon.js +3 -0
- package/dist/cjs/index.js +4 -1
- package/dist/esm/components/FEaaSComponent.js +67 -55
- package/dist/esm/components/PlaceholderCommon.js +3 -0
- package/dist/esm/index.js +2 -1
- package/package.json +5 -5
- package/types/components/FEaaSComponent.d.ts +51 -6
- package/types/components/Link.d.ts +1 -1
- package/types/index.d.ts +2 -1
|
@@ -22,72 +22,89 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
25
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
27
|
-
|
|
28
|
-
const
|
|
38
|
+
exports.composeComponentEndpoint = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.FEAAS_COMPONENT_RENDERING_NAME = void 0;
|
|
39
|
+
const react_1 = __importDefault(require("react"));
|
|
40
|
+
const FEAAS = __importStar(require("@sitecore-feaas/clientside/react"));
|
|
29
41
|
const layout_1 = require("@sitecore-jss/sitecore-jss/layout");
|
|
30
42
|
exports.FEAAS_COMPONENT_RENDERING_NAME = 'FEaaSComponent';
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
!params.ComponentId ||
|
|
44
|
-
!params.ComponentVersion ||
|
|
45
|
-
!params.ComponentRevision ||
|
|
46
|
-
!params.ComponentHostName) {
|
|
43
|
+
/**
|
|
44
|
+
* @param {FEaaSComponentProps} props component props
|
|
45
|
+
*/
|
|
46
|
+
const FEaaSComponent = (props) => {
|
|
47
|
+
var _a, _b, _c, _d, _e, _f;
|
|
48
|
+
if ((!props.lastModified || !props.template) &&
|
|
49
|
+
(!props.params ||
|
|
50
|
+
!props.params.LibraryId ||
|
|
51
|
+
!props.params.ComponentId ||
|
|
52
|
+
!props.params.ComponentVersion ||
|
|
53
|
+
!props.params.ComponentRevision ||
|
|
54
|
+
!props.params.ComponentHostName)) {
|
|
47
55
|
// Missing FEaaS component required props
|
|
48
56
|
return null;
|
|
49
57
|
}
|
|
50
|
-
|
|
51
|
-
(0
|
|
52
|
-
var _a;
|
|
53
|
-
(_a = window.FEAASLoading) !== null && _a !== void 0 ? _a : (window.FEAASLoading = new Promise((resolve) => {
|
|
54
|
-
const script = document.createElement('script');
|
|
55
|
-
script.src = exports.FEAAS_MODULE_SRC;
|
|
56
|
-
script.type = 'module';
|
|
57
|
-
script.onload = resolve;
|
|
58
|
-
document.head.appendChild(script);
|
|
59
|
-
}));
|
|
60
|
-
}, []);
|
|
61
|
-
let data = '';
|
|
62
|
-
if (params === null || params === void 0 ? void 0 : params.ComponentDataOverride) {
|
|
58
|
+
let data = null;
|
|
59
|
+
if ((_a = props.params) === null || _a === void 0 ? void 0 : _a.ComponentDataOverride) {
|
|
63
60
|
// Use override data if provided
|
|
64
|
-
data = params.ComponentDataOverride;
|
|
61
|
+
data = props.params.ComponentDataOverride;
|
|
65
62
|
}
|
|
66
|
-
else if (fields) {
|
|
63
|
+
else if (props.fields) {
|
|
67
64
|
// Otherwise use datasource data (provided in fields)
|
|
68
65
|
// FEaaS expects wrapping "_" as catch-all datasource template id
|
|
69
|
-
data = JSON.stringify({ _: getDataFromFields(fields) });
|
|
70
|
-
}
|
|
71
|
-
const reqProps = {
|
|
72
|
-
library: params.LibraryId,
|
|
73
|
-
cdn: params.ComponentHostName,
|
|
74
|
-
component: params.ComponentId,
|
|
75
|
-
version: params.ComponentVersion,
|
|
76
|
-
revision: params.ComponentRevision,
|
|
77
|
-
data,
|
|
78
|
-
};
|
|
79
|
-
const optProps = {};
|
|
80
|
-
if (params.ComponentInstanceId) {
|
|
81
|
-
optProps.instance = params.ComponentInstanceId;
|
|
66
|
+
data = JSON.stringify({ _: getDataFromFields(props.fields) });
|
|
82
67
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return (react_1.default.createElement(
|
|
87
|
-
react_1.default.createElement("link", { rel: "preload", as: "style", href: `${reqProps.cdn}/styles/${reqProps.library}/published.css` }),
|
|
88
|
-
react_1.default.createElement("link", { rel: "preload", as: "fetch", href: `${reqProps.cdn}/components/${reqProps.library}/${reqProps.component}/${reqProps.version}/${reqProps.revision}.html` }),
|
|
89
|
-
react_1.default.createElement("link", { rel: "preload", as: "script", href: exports.FEAAS_MODULE_SRC }),
|
|
90
|
-
react_1.default.createElement("feaas-stylesheet", { library: reqProps.library, cdn: reqProps.cdn }),
|
|
91
|
-
react_1.default.createElement("feaas-component", Object.assign({}, reqProps, optProps))));
|
|
68
|
+
// FEaaS control would still be hydrated by client
|
|
69
|
+
// we pass all the props as a workaround to avoid hydration error, until we convert all JSS components to server side
|
|
70
|
+
// this also allows component to fall back to full client-side rendering when template or src is empty
|
|
71
|
+
return (react_1.default.createElement(FEAAS.Component, { data: data, template: props.template || '', "last-modified": props.lastModified, cdn: (_b = props.params) === null || _b === void 0 ? void 0 : _b.ComponentHostName, library: (_c = props.params) === null || _c === void 0 ? void 0 : _c.LibraryId, version: (_d = props.params) === null || _d === void 0 ? void 0 : _d.ComponentVersion, component: (_e = props.params) === null || _e === void 0 ? void 0 : _e.ComponentId, revision: (_f = props.params) === null || _f === void 0 ? void 0 : _f.ComponentRevision }));
|
|
92
72
|
};
|
|
93
73
|
exports.FEaaSComponent = FEaaSComponent;
|
|
74
|
+
/**
|
|
75
|
+
* Fetches server component props required for server rendering, based on rendering params.
|
|
76
|
+
* Component endpoint will either be retrieved from params or from endpointOverride
|
|
77
|
+
* @param {FEaaSComponentParams} params component params
|
|
78
|
+
* @param {string} [endpointOverride] optional override for component endpoint
|
|
79
|
+
*/
|
|
80
|
+
function fetchFEaaSComponentServerProps(params, endpointOverride) {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
const src = endpointOverride || (0, exports.composeComponentEndpoint)(params);
|
|
83
|
+
const { template, lastModified } = yield FEAAS.fetchComponent(src);
|
|
84
|
+
return {
|
|
85
|
+
template,
|
|
86
|
+
lastModified,
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
exports.fetchFEaaSComponentServerProps = fetchFEaaSComponentServerProps;
|
|
91
|
+
const getDataFromFields = (fields) => {
|
|
92
|
+
let data = {};
|
|
93
|
+
data = Object.entries(fields).reduce((acc, [key]) => {
|
|
94
|
+
acc[key] = (0, layout_1.getFieldValue)(fields, key);
|
|
95
|
+
return acc;
|
|
96
|
+
}, data);
|
|
97
|
+
return data;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Build component endpoint URL from component's params
|
|
101
|
+
* @param {FEaaSComponentParams} params rendering parameters for FEAAS component
|
|
102
|
+
* @returns component endpoint URL
|
|
103
|
+
*/
|
|
104
|
+
const composeComponentEndpoint = (params) => {
|
|
105
|
+
const hostname = params.ComponentHostName.startsWith('https://')
|
|
106
|
+
? params.ComponentHostName
|
|
107
|
+
: `https://${params.ComponentHostName}`;
|
|
108
|
+
return `${hostname}/components/${params.LibraryId}/${params.ComponentId}/${params.ComponentVersion}/${params.ComponentRevision}`;
|
|
109
|
+
};
|
|
110
|
+
exports.composeComponentEndpoint = composeComponentEndpoint;
|
|
@@ -97,6 +97,9 @@ class PlaceholderCommon extends react_1.default.Component {
|
|
|
97
97
|
if (componentRendering.componentName === HiddenRendering_1.HIDDEN_RENDERING_NAME) {
|
|
98
98
|
component = hiddenRenderingComponent !== null && hiddenRenderingComponent !== void 0 ? hiddenRenderingComponent : HiddenRendering_1.HiddenRendering;
|
|
99
99
|
}
|
|
100
|
+
else if (!componentRendering.componentName) {
|
|
101
|
+
component = () => react_1.default.createElement(react_1.default.Fragment, null);
|
|
102
|
+
}
|
|
100
103
|
else {
|
|
101
104
|
component = this.getComponentForRendering(componentRendering);
|
|
102
105
|
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EditFrame = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.File = exports.LinkPropTypes = exports.Link = exports.FEaaSComponent = exports.DateField = exports.Text = exports.RichTextPropTypes = exports.RichText = exports.getEEMarkup = exports.Image = exports.Placeholder = exports.mediaApi = exports.RestDictionaryService = exports.GraphQLDictionaryService = exports.trackingApi = exports.getFieldValue = exports.getChildPlaceholder = exports.RestLayoutService = exports.GraphQLLayoutService = exports.LayoutServicePageState = exports.DefaultEditFrameButtons = exports.DefaultEditFrameButton = exports.resetEditorChromes = exports.isEditorActive = exports.enableDebug = exports.constants = void 0;
|
|
3
|
+
exports.EditFrame = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.File = exports.LinkPropTypes = exports.Link = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.RichTextPropTypes = exports.RichText = exports.getEEMarkup = exports.Image = exports.Placeholder = exports.getFEAASLibraryStylesheetLinks = exports.mediaApi = exports.RestDictionaryService = exports.GraphQLDictionaryService = exports.trackingApi = exports.getFieldValue = exports.getChildPlaceholder = exports.RestLayoutService = exports.GraphQLLayoutService = exports.LayoutServicePageState = exports.DefaultEditFrameButtons = exports.DefaultEditFrameButton = exports.resetEditorChromes = exports.isEditorActive = exports.enableDebug = exports.constants = void 0;
|
|
4
4
|
var sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
|
|
5
5
|
Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return sitecore_jss_1.constants; } });
|
|
6
6
|
Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return sitecore_jss_1.enableDebug; } });
|
|
@@ -22,6 +22,8 @@ Object.defineProperty(exports, "GraphQLDictionaryService", { enumerable: true, g
|
|
|
22
22
|
Object.defineProperty(exports, "RestDictionaryService", { enumerable: true, get: function () { return i18n_1.RestDictionaryService; } });
|
|
23
23
|
var media_1 = require("@sitecore-jss/sitecore-jss/media");
|
|
24
24
|
Object.defineProperty(exports, "mediaApi", { enumerable: true, get: function () { return media_1.mediaApi; } });
|
|
25
|
+
var feaas_1 = require("@sitecore-jss/sitecore-jss/feaas");
|
|
26
|
+
Object.defineProperty(exports, "getFEAASLibraryStylesheetLinks", { enumerable: true, get: function () { return feaas_1.getFEAASLibraryStylesheetLinks; } });
|
|
25
27
|
var Placeholder_1 = require("./components/Placeholder");
|
|
26
28
|
Object.defineProperty(exports, "Placeholder", { enumerable: true, get: function () { return Placeholder_1.Placeholder; } });
|
|
27
29
|
var Image_1 = require("./components/Image");
|
|
@@ -36,6 +38,7 @@ var Date_1 = require("./components/Date");
|
|
|
36
38
|
Object.defineProperty(exports, "DateField", { enumerable: true, get: function () { return Date_1.DateField; } });
|
|
37
39
|
var FEaaSComponent_1 = require("./components/FEaaSComponent");
|
|
38
40
|
Object.defineProperty(exports, "FEaaSComponent", { enumerable: true, get: function () { return FEaaSComponent_1.FEaaSComponent; } });
|
|
41
|
+
Object.defineProperty(exports, "fetchFEaaSComponentServerProps", { enumerable: true, get: function () { return FEaaSComponent_1.fetchFEaaSComponentServerProps; } });
|
|
39
42
|
var Link_1 = require("./components/Link");
|
|
40
43
|
Object.defineProperty(exports, "Link", { enumerable: true, get: function () { return Link_1.Link; } });
|
|
41
44
|
Object.defineProperty(exports, "LinkPropTypes", { enumerable: true, get: function () { return Link_1.LinkPropTypes; } });
|
|
@@ -1,66 +1,78 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import * as FEAAS from '@sitecore-feaas/clientside/react';
|
|
3
12
|
import { getFieldValue } from '@sitecore-jss/sitecore-jss/layout';
|
|
4
13
|
export const FEAAS_COMPONENT_RENDERING_NAME = 'FEaaSComponent';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
!params.ComponentId ||
|
|
18
|
-
!params.ComponentVersion ||
|
|
19
|
-
!params.ComponentRevision ||
|
|
20
|
-
!params.ComponentHostName) {
|
|
14
|
+
/**
|
|
15
|
+
* @param {FEaaSComponentProps} props component props
|
|
16
|
+
*/
|
|
17
|
+
export const FEaaSComponent = (props) => {
|
|
18
|
+
var _a, _b, _c, _d, _e, _f;
|
|
19
|
+
if ((!props.lastModified || !props.template) &&
|
|
20
|
+
(!props.params ||
|
|
21
|
+
!props.params.LibraryId ||
|
|
22
|
+
!props.params.ComponentId ||
|
|
23
|
+
!props.params.ComponentVersion ||
|
|
24
|
+
!props.params.ComponentRevision ||
|
|
25
|
+
!props.params.ComponentHostName)) {
|
|
21
26
|
// Missing FEaaS component required props
|
|
22
27
|
return null;
|
|
23
28
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var _a;
|
|
27
|
-
(_a = window.FEAASLoading) !== null && _a !== void 0 ? _a : (window.FEAASLoading = new Promise((resolve) => {
|
|
28
|
-
const script = document.createElement('script');
|
|
29
|
-
script.src = FEAAS_MODULE_SRC;
|
|
30
|
-
script.type = 'module';
|
|
31
|
-
script.onload = resolve;
|
|
32
|
-
document.head.appendChild(script);
|
|
33
|
-
}));
|
|
34
|
-
}, []);
|
|
35
|
-
let data = '';
|
|
36
|
-
if (params === null || params === void 0 ? void 0 : params.ComponentDataOverride) {
|
|
29
|
+
let data = null;
|
|
30
|
+
if ((_a = props.params) === null || _a === void 0 ? void 0 : _a.ComponentDataOverride) {
|
|
37
31
|
// Use override data if provided
|
|
38
|
-
data = params.ComponentDataOverride;
|
|
32
|
+
data = props.params.ComponentDataOverride;
|
|
39
33
|
}
|
|
40
|
-
else if (fields) {
|
|
34
|
+
else if (props.fields) {
|
|
41
35
|
// Otherwise use datasource data (provided in fields)
|
|
42
36
|
// FEaaS expects wrapping "_" as catch-all datasource template id
|
|
43
|
-
data = JSON.stringify({ _: getDataFromFields(fields) });
|
|
44
|
-
}
|
|
45
|
-
const reqProps = {
|
|
46
|
-
library: params.LibraryId,
|
|
47
|
-
cdn: params.ComponentHostName,
|
|
48
|
-
component: params.ComponentId,
|
|
49
|
-
version: params.ComponentVersion,
|
|
50
|
-
revision: params.ComponentRevision,
|
|
51
|
-
data,
|
|
52
|
-
};
|
|
53
|
-
const optProps = {};
|
|
54
|
-
if (params.ComponentInstanceId) {
|
|
55
|
-
optProps.instance = params.ComponentInstanceId;
|
|
37
|
+
data = JSON.stringify({ _: getDataFromFields(props.fields) });
|
|
56
38
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return (React.createElement(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
39
|
+
// FEaaS control would still be hydrated by client
|
|
40
|
+
// we pass all the props as a workaround to avoid hydration error, until we convert all JSS components to server side
|
|
41
|
+
// this also allows component to fall back to full client-side rendering when template or src is empty
|
|
42
|
+
return (React.createElement(FEAAS.Component, { data: data, template: props.template || '', "last-modified": props.lastModified, cdn: (_b = props.params) === null || _b === void 0 ? void 0 : _b.ComponentHostName, library: (_c = props.params) === null || _c === void 0 ? void 0 : _c.LibraryId, version: (_d = props.params) === null || _d === void 0 ? void 0 : _d.ComponentVersion, component: (_e = props.params) === null || _e === void 0 ? void 0 : _e.ComponentId, revision: (_f = props.params) === null || _f === void 0 ? void 0 : _f.ComponentRevision }));
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Fetches server component props required for server rendering, based on rendering params.
|
|
46
|
+
* Component endpoint will either be retrieved from params or from endpointOverride
|
|
47
|
+
* @param {FEaaSComponentParams} params component params
|
|
48
|
+
* @param {string} [endpointOverride] optional override for component endpoint
|
|
49
|
+
*/
|
|
50
|
+
export function fetchFEaaSComponentServerProps(params, endpointOverride) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const src = endpointOverride || composeComponentEndpoint(params);
|
|
53
|
+
const { template, lastModified } = yield FEAAS.fetchComponent(src);
|
|
54
|
+
return {
|
|
55
|
+
template,
|
|
56
|
+
lastModified,
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const getDataFromFields = (fields) => {
|
|
61
|
+
let data = {};
|
|
62
|
+
data = Object.entries(fields).reduce((acc, [key]) => {
|
|
63
|
+
acc[key] = getFieldValue(fields, key);
|
|
64
|
+
return acc;
|
|
65
|
+
}, data);
|
|
66
|
+
return data;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Build component endpoint URL from component's params
|
|
70
|
+
* @param {FEaaSComponentParams} params rendering parameters for FEAAS component
|
|
71
|
+
* @returns component endpoint URL
|
|
72
|
+
*/
|
|
73
|
+
export const composeComponentEndpoint = (params) => {
|
|
74
|
+
const hostname = params.ComponentHostName.startsWith('https://')
|
|
75
|
+
? params.ComponentHostName
|
|
76
|
+
: `https://${params.ComponentHostName}`;
|
|
77
|
+
return `${hostname}/components/${params.LibraryId}/${params.ComponentId}/${params.ComponentVersion}/${params.ComponentRevision}`;
|
|
66
78
|
};
|
|
@@ -91,6 +91,9 @@ export class PlaceholderCommon extends React.Component {
|
|
|
91
91
|
if (componentRendering.componentName === HIDDEN_RENDERING_NAME) {
|
|
92
92
|
component = hiddenRenderingComponent !== null && hiddenRenderingComponent !== void 0 ? hiddenRenderingComponent : HiddenRendering;
|
|
93
93
|
}
|
|
94
|
+
else if (!componentRendering.componentName) {
|
|
95
|
+
component = () => React.createElement(React.Fragment, null);
|
|
96
|
+
}
|
|
94
97
|
else {
|
|
95
98
|
component = this.getComponentForRendering(componentRendering);
|
|
96
99
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -4,12 +4,13 @@ export { LayoutServicePageState, GraphQLLayoutService, RestLayoutService, getChi
|
|
|
4
4
|
export { trackingApi, } from '@sitecore-jss/sitecore-jss/tracking';
|
|
5
5
|
export { GraphQLDictionaryService, RestDictionaryService, } from '@sitecore-jss/sitecore-jss/i18n';
|
|
6
6
|
export { mediaApi } from '@sitecore-jss/sitecore-jss/media';
|
|
7
|
+
export { getFEAASLibraryStylesheetLinks } from '@sitecore-jss/sitecore-jss/feaas';
|
|
7
8
|
export { Placeholder } from './components/Placeholder';
|
|
8
9
|
export { Image, getEEMarkup, } from './components/Image';
|
|
9
10
|
export { RichText, RichTextPropTypes } from './components/RichText';
|
|
10
11
|
export { Text } from './components/Text';
|
|
11
12
|
export { DateField } from './components/Date';
|
|
12
|
-
export { FEaaSComponent } from './components/FEaaSComponent';
|
|
13
|
+
export { FEaaSComponent, fetchFEaaSComponentServerProps, } from './components/FEaaSComponent';
|
|
13
14
|
export { Link, LinkPropTypes } from './components/Link';
|
|
14
15
|
export { File } from './components/File';
|
|
15
16
|
export { VisitorIdentification } from './components/VisitorIdentification';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sitecore-jss/sitecore-jss-react",
|
|
3
|
-
"version": "22.0.0-canary.
|
|
3
|
+
"version": "22.0.0-canary.20",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -27,7 +27,6 @@
|
|
|
27
27
|
"url": "https://github.com/sitecore/jss/issues"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@sitecore-feaas/clientside": "^0.1.24",
|
|
31
30
|
"@types/chai": "^4.3.4",
|
|
32
31
|
"@types/chai-string": "^1.4.2",
|
|
33
32
|
"@types/deep-equal": "^1.0.1",
|
|
@@ -48,7 +47,7 @@
|
|
|
48
47
|
"eslint": "^8.28.0",
|
|
49
48
|
"eslint-plugin-react": "^7.31.11",
|
|
50
49
|
"jsdom": "^20.0.3",
|
|
51
|
-
"mocha": "^10.
|
|
50
|
+
"mocha": "^10.2.0",
|
|
52
51
|
"nyc": "^15.1.0",
|
|
53
52
|
"react": "^18.2.0",
|
|
54
53
|
"react-dom": "^18.2.0",
|
|
@@ -62,7 +61,8 @@
|
|
|
62
61
|
"react-dom": "^18.2.0"
|
|
63
62
|
},
|
|
64
63
|
"dependencies": {
|
|
65
|
-
"@sitecore-
|
|
64
|
+
"@sitecore-feaas/clientside": "^0.1.48",
|
|
65
|
+
"@sitecore-jss/sitecore-jss": "^22.0.0-canary.20",
|
|
66
66
|
"deep-equal": "^2.1.0",
|
|
67
67
|
"html-react-parser": "^3.0.4",
|
|
68
68
|
"prop-types": "^15.8.1",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
},
|
|
71
71
|
"description": "",
|
|
72
72
|
"types": "types/index.d.ts",
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "5fac4fc4727e1fa1a5a0de24b8fc561150e62ff4",
|
|
74
74
|
"files": [
|
|
75
75
|
"dist",
|
|
76
76
|
"types"
|
|
@@ -1,18 +1,63 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ComponentFields } from '@sitecore-jss/sitecore-jss/layout';
|
|
2
2
|
export declare const FEAAS_COMPONENT_RENDERING_NAME = "FEaaSComponent";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Params from a Sitecore FEaaS rendering
|
|
5
|
+
*/
|
|
6
|
+
export type FEaaSComponentParams = {
|
|
5
7
|
LibraryId?: string;
|
|
6
8
|
ComponentId?: string;
|
|
7
9
|
ComponentVersion?: string;
|
|
8
|
-
ComponentRevision?:
|
|
10
|
+
ComponentRevision?: number | 'staged' | 'published' | 'saved';
|
|
9
11
|
ComponentHostName?: string;
|
|
10
12
|
ComponentInstanceId?: string;
|
|
11
13
|
ComponentDataOverride?: string;
|
|
12
14
|
ComponentHTMLOverride?: string;
|
|
15
|
+
styles?: string;
|
|
16
|
+
RenderingIdentifier?: string;
|
|
13
17
|
};
|
|
14
|
-
|
|
18
|
+
/**
|
|
19
|
+
* FEaaS props for server rendering.
|
|
20
|
+
*/
|
|
21
|
+
type FEaaSComponentServerProps = {
|
|
22
|
+
/**
|
|
23
|
+
* HTML template for presentation rendered inside the component
|
|
24
|
+
*/
|
|
25
|
+
template?: string;
|
|
26
|
+
/**
|
|
27
|
+
* the date component data was last modified
|
|
28
|
+
*/
|
|
29
|
+
lastModified?: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* FEaaS props for client side component. Should be used as fallback when server props are not provided.
|
|
33
|
+
* Would also be passed on server to avoid hydration issues
|
|
34
|
+
*/
|
|
35
|
+
type FEaaSComponentClientProps = {
|
|
36
|
+
/**
|
|
37
|
+
* parameters from Sitecore's FEAAS component
|
|
38
|
+
*/
|
|
15
39
|
params?: FEaaSComponentParams;
|
|
40
|
+
/**
|
|
41
|
+
* field data from component's datasource
|
|
42
|
+
*/
|
|
16
43
|
fields?: ComponentFields;
|
|
17
44
|
};
|
|
18
|
-
export
|
|
45
|
+
export type FEaaSComponentProps = FEaaSComponentServerProps & FEaaSComponentClientProps;
|
|
46
|
+
/**
|
|
47
|
+
* @param {FEaaSComponentProps} props component props
|
|
48
|
+
*/
|
|
49
|
+
export declare const FEaaSComponent: (props: FEaaSComponentProps) => JSX.Element;
|
|
50
|
+
/**
|
|
51
|
+
* Fetches server component props required for server rendering, based on rendering params.
|
|
52
|
+
* Component endpoint will either be retrieved from params or from endpointOverride
|
|
53
|
+
* @param {FEaaSComponentParams} params component params
|
|
54
|
+
* @param {string} [endpointOverride] optional override for component endpoint
|
|
55
|
+
*/
|
|
56
|
+
export declare function fetchFEaaSComponentServerProps(params: FEaaSComponentParams, endpointOverride?: string): Promise<FEaaSComponentProps>;
|
|
57
|
+
/**
|
|
58
|
+
* Build component endpoint URL from component's params
|
|
59
|
+
* @param {FEaaSComponentParams} params rendering parameters for FEAAS component
|
|
60
|
+
* @returns component endpoint URL
|
|
61
|
+
*/
|
|
62
|
+
export declare const composeComponentEndpoint: (params: FEaaSComponentParams) => string;
|
|
63
|
+
export {};
|
|
@@ -32,7 +32,7 @@ export type LinkProps = React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLA
|
|
|
32
32
|
*/
|
|
33
33
|
showLinkTextWithChildrenPresent?: boolean;
|
|
34
34
|
};
|
|
35
|
-
export declare const Link: React.ForwardRefExoticComponent<Pick<LinkProps, "key" | "
|
|
35
|
+
export declare const Link: React.ForwardRefExoticComponent<Pick<LinkProps, "key" | "field" | "editable" | "showLinkTextWithChildrenPresent" | keyof React.AnchorHTMLAttributes<HTMLAnchorElement>> & React.RefAttributes<HTMLAnchorElement>>;
|
|
36
36
|
export declare const LinkPropTypes: {
|
|
37
37
|
field: PropTypes.Validator<NonNullable<NonNullable<PropTypes.InferProps<{
|
|
38
38
|
href: PropTypes.Requireable<any>;
|
package/types/index.d.ts
CHANGED
|
@@ -4,13 +4,14 @@ export { LayoutService, LayoutServiceData, LayoutServicePageState, LayoutService
|
|
|
4
4
|
export { trackingApi, TrackingRequestOptions, CampaignInstance, GoalInstance, OutcomeInstance, EventInstance, PageViewInstance, } from '@sitecore-jss/sitecore-jss/tracking';
|
|
5
5
|
export { DictionaryPhrases, DictionaryService, GraphQLDictionaryService, RestDictionaryService, } from '@sitecore-jss/sitecore-jss/i18n';
|
|
6
6
|
export { mediaApi } from '@sitecore-jss/sitecore-jss/media';
|
|
7
|
+
export { getFEAASLibraryStylesheetLinks } from '@sitecore-jss/sitecore-jss/feaas';
|
|
7
8
|
export { ComponentFactory } from './components/sharedTypes';
|
|
8
9
|
export { Placeholder, PlaceholderComponentProps } from './components/Placeholder';
|
|
9
10
|
export { Image, ImageProps, ImageField, getEEMarkup, ImageFieldValue, ImageSizeParameters, } from './components/Image';
|
|
10
11
|
export { RichText, RichTextProps, RichTextPropTypes, RichTextField } from './components/RichText';
|
|
11
12
|
export { Text, TextField } from './components/Text';
|
|
12
13
|
export { DateField, DateFieldProps } from './components/Date';
|
|
13
|
-
export { FEaaSComponent, FEaaSComponentProps } from './components/FEaaSComponent';
|
|
14
|
+
export { FEaaSComponent, FEaaSComponentProps, FEaaSComponentParams, fetchFEaaSComponentServerProps, } from './components/FEaaSComponent';
|
|
14
15
|
export { Link, LinkField, LinkFieldValue, LinkProps, LinkPropTypes } from './components/Link';
|
|
15
16
|
export { File, FileField } from './components/File';
|
|
16
17
|
export { VisitorIdentification } from './components/VisitorIdentification';
|