@sitecore-jss/sitecore-jss-react 21.1.0-canary.99 → 21.1.1

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/README.md CHANGED
@@ -2,9 +2,7 @@
2
2
 
3
3
  This module is provided as a part of Sitecore JavaScript Rendering SDK (JSS). It contains React components and integration for JSS.
4
4
 
5
- <!---
6
- @TODO: Update to version 20.0.0 docs before release
7
- -->
8
- [Documentation](https://doc.sitecore.com/xp/en/developers/hd/190/sitecore-headless-development/sitecore-javascript-rendering-sdk--jss--for-react.html)
9
5
 
10
- [API reference documentation](/ref-docs/sitecore-jss-react/).
6
+ [Documentation (Experience Platform)](https://doc.sitecore.com/xp/en/developers/hd/210/sitecore-headless-development/sitecore-javascript-rendering-sdk--jss--for-react.html)
7
+
8
+ [API reference documentation](/ref-docs/sitecore-jss-react/)
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EditFrame = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const withSitecoreContext_1 = require("../enhancers/withSitecoreContext");
9
+ const utils_1 = require("@sitecore-jss/sitecore-jss/utils");
10
+ const EditFrame = ({ children, dataSource, buttons, title, tooltip, cssClass, parameters, }) => {
11
+ var _a;
12
+ const { sitecoreContext } = (0, withSitecoreContext_1.useSitecoreContext)();
13
+ if (!sitecoreContext.pageEditing) {
14
+ return react_1.default.createElement(react_1.default.Fragment, null, children);
15
+ }
16
+ const chromeData = {
17
+ displayName: title,
18
+ expandedDisplayName: tooltip,
19
+ };
20
+ const frameProps = {};
21
+ frameProps.className = 'scLooseFrameZone';
22
+ if (cssClass) {
23
+ frameProps.className = `${frameProps.className} ${cssClass}`;
24
+ }
25
+ // item uri for edit frame target
26
+ if (dataSource) {
27
+ const databaseName = dataSource.databaseName || ((_a = sitecoreContext.route) === null || _a === void 0 ? void 0 : _a.databaseName);
28
+ const language = dataSource.language || sitecoreContext.language;
29
+ frameProps.sc_item = `sitecore://${databaseName}/${dataSource.itemId}?lang=${language}`;
30
+ chromeData.contextItemUri = frameProps.sc_item;
31
+ }
32
+ chromeData.commands = buttons === null || buttons === void 0 ? void 0 : buttons.map((value) => {
33
+ return (0, utils_1.mapButtonToCommand)(value, dataSource === null || dataSource === void 0 ? void 0 : dataSource.itemId, parameters);
34
+ });
35
+ return (react_1.default.createElement("div", Object.assign({ className: "scLooseFrameZone" }, frameProps),
36
+ react_1.default.createElement("span", { className: "scChromeData" }, JSON.stringify(chromeData)),
37
+ children));
38
+ };
39
+ exports.EditFrame = EditFrame;
@@ -84,8 +84,10 @@ const FEaaSComponent = ({ params, fields }) => {
84
84
  optProps.dangerouslySetInnerHTML = { __html: params.ComponentHTMLOverride };
85
85
  }
86
86
  return (react_1.default.createElement(react_1.default.Fragment, null,
87
- react_1.default.createElement("feaas-stylesheet", { library: reqProps.library, cdn: reqProps.cdn },
88
- react_1.default.createElement("link", { rel: "stylesheet", href: `${reqProps.cdn}/styles/${reqProps.library}/published.css` })),
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 }),
89
91
  react_1.default.createElement("feaas-component", Object.assign({}, reqProps, optProps))));
90
92
  };
91
93
  exports.FEaaSComponent = FEaaSComponent;
@@ -79,7 +79,7 @@ exports.Link = (0, react_1.forwardRef)((_a, ref) => {
79
79
  if (!link) {
80
80
  return null;
81
81
  }
82
- const anchor = link.anchor ? `#${link.anchor}` : '';
82
+ const anchor = link.linktype !== 'anchor' && link.anchor ? `#${link.anchor}` : '';
83
83
  const querystring = link.querystring ? `?${link.querystring}` : '';
84
84
  const anchorAttrs = {
85
85
  href: `${link.href}${querystring}${anchor}`,
@@ -73,6 +73,8 @@ class PlaceholderCommon extends react_1.default.Component {
73
73
  this.setState({ error });
74
74
  }
75
75
  getSXAParams(rendering) {
76
+ if (!rendering.params)
77
+ return {};
76
78
  return (rendering.params.FieldNames && {
77
79
  styles: `${rendering.params.GridParameters || ''} ${rendering.params.Styles || ''}`,
78
80
  });
package/dist/cjs/index.js CHANGED
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- 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.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.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;
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; } });
7
7
  var utils_1 = require("@sitecore-jss/sitecore-jss/utils");
8
8
  Object.defineProperty(exports, "isEditorActive", { enumerable: true, get: function () { return utils_1.isEditorActive; } });
9
9
  Object.defineProperty(exports, "resetEditorChromes", { enumerable: true, get: function () { return utils_1.resetEditorChromes; } });
10
+ Object.defineProperty(exports, "DefaultEditFrameButton", { enumerable: true, get: function () { return utils_1.DefaultEditFrameButton; } });
11
+ Object.defineProperty(exports, "DefaultEditFrameButtons", { enumerable: true, get: function () { return utils_1.DefaultEditFrameButtons; } });
10
12
  var layout_1 = require("@sitecore-jss/sitecore-jss/layout");
11
13
  Object.defineProperty(exports, "LayoutServicePageState", { enumerable: true, get: function () { return layout_1.LayoutServicePageState; } });
12
14
  Object.defineProperty(exports, "GraphQLLayoutService", { enumerable: true, get: function () { return layout_1.GraphQLLayoutService; } });
@@ -53,3 +55,5 @@ var withPlaceholder_1 = require("./enhancers/withPlaceholder");
53
55
  Object.defineProperty(exports, "withPlaceholder", { enumerable: true, get: function () { return withPlaceholder_1.withPlaceholder; } });
54
56
  var withDatasourceCheck_1 = require("./enhancers/withDatasourceCheck");
55
57
  Object.defineProperty(exports, "withDatasourceCheck", { enumerable: true, get: function () { return withDatasourceCheck_1.withDatasourceCheck; } });
58
+ var EditFrame_1 = require("./components/EditFrame");
59
+ Object.defineProperty(exports, "EditFrame", { enumerable: true, get: function () { return EditFrame_1.EditFrame; } });
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { useSitecoreContext } from '../enhancers/withSitecoreContext';
3
+ import { mapButtonToCommand, } from '@sitecore-jss/sitecore-jss/utils';
4
+ export const EditFrame = ({ children, dataSource, buttons, title, tooltip, cssClass, parameters, }) => {
5
+ var _a;
6
+ const { sitecoreContext } = useSitecoreContext();
7
+ if (!sitecoreContext.pageEditing) {
8
+ return React.createElement(React.Fragment, null, children);
9
+ }
10
+ const chromeData = {
11
+ displayName: title,
12
+ expandedDisplayName: tooltip,
13
+ };
14
+ const frameProps = {};
15
+ frameProps.className = 'scLooseFrameZone';
16
+ if (cssClass) {
17
+ frameProps.className = `${frameProps.className} ${cssClass}`;
18
+ }
19
+ // item uri for edit frame target
20
+ if (dataSource) {
21
+ const databaseName = dataSource.databaseName || ((_a = sitecoreContext.route) === null || _a === void 0 ? void 0 : _a.databaseName);
22
+ const language = dataSource.language || sitecoreContext.language;
23
+ frameProps.sc_item = `sitecore://${databaseName}/${dataSource.itemId}?lang=${language}`;
24
+ chromeData.contextItemUri = frameProps.sc_item;
25
+ }
26
+ chromeData.commands = buttons === null || buttons === void 0 ? void 0 : buttons.map((value) => {
27
+ return mapButtonToCommand(value, dataSource === null || dataSource === void 0 ? void 0 : dataSource.itemId, parameters);
28
+ });
29
+ return (React.createElement("div", Object.assign({ className: "scLooseFrameZone" }, frameProps),
30
+ React.createElement("span", { className: "scChromeData" }, JSON.stringify(chromeData)),
31
+ children));
32
+ };
@@ -58,7 +58,9 @@ export const FEaaSComponent = ({ params, fields }) => {
58
58
  optProps.dangerouslySetInnerHTML = { __html: params.ComponentHTMLOverride };
59
59
  }
60
60
  return (React.createElement(React.Fragment, null,
61
- React.createElement("feaas-stylesheet", { library: reqProps.library, cdn: reqProps.cdn },
62
- React.createElement("link", { rel: "stylesheet", href: `${reqProps.cdn}/styles/${reqProps.library}/published.css` })),
61
+ React.createElement("link", { rel: "preload", as: "style", href: `${reqProps.cdn}/styles/${reqProps.library}/published.css` }),
62
+ React.createElement("link", { rel: "preload", as: "fetch", href: `${reqProps.cdn}/components/${reqProps.library}/${reqProps.component}/${reqProps.version}/${reqProps.revision}.html` }),
63
+ React.createElement("link", { rel: "preload", as: "script", href: FEAAS_MODULE_SRC }),
64
+ React.createElement("feaas-stylesheet", { library: reqProps.library, cdn: reqProps.cdn }),
63
65
  React.createElement("feaas-component", Object.assign({}, reqProps, optProps))));
64
66
  };
@@ -50,7 +50,7 @@ export const Link = forwardRef((_a, ref) => {
50
50
  if (!link) {
51
51
  return null;
52
52
  }
53
- const anchor = link.anchor ? `#${link.anchor}` : '';
53
+ const anchor = link.linktype !== 'anchor' && link.anchor ? `#${link.anchor}` : '';
54
54
  const querystring = link.querystring ? `?${link.querystring}` : '';
55
55
  const anchorAttrs = {
56
56
  href: `${link.href}${querystring}${anchor}`,
@@ -67,6 +67,8 @@ export class PlaceholderCommon extends React.Component {
67
67
  this.setState({ error });
68
68
  }
69
69
  getSXAParams(rendering) {
70
+ if (!rendering.params)
71
+ return {};
70
72
  return (rendering.params.FieldNames && {
71
73
  styles: `${rendering.params.GridParameters || ''} ${rendering.params.Styles || ''}`,
72
74
  });
package/dist/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { constants, enableDebug } from '@sitecore-jss/sitecore-jss';
2
- export { isEditorActive, resetEditorChromes } from '@sitecore-jss/sitecore-jss/utils';
2
+ export { isEditorActive, resetEditorChromes, DefaultEditFrameButton, DefaultEditFrameButtons, } from '@sitecore-jss/sitecore-jss/utils';
3
3
  export { LayoutServicePageState, GraphQLLayoutService, RestLayoutService, getChildPlaceholder, getFieldValue, } from '@sitecore-jss/sitecore-jss/layout';
4
4
  export { trackingApi, } from '@sitecore-jss/sitecore-jss/tracking';
5
5
  export { GraphQLDictionaryService, RestDictionaryService, } from '@sitecore-jss/sitecore-jss/i18n';
@@ -18,3 +18,4 @@ export { withSitecoreContext, useSitecoreContext, } from './enhancers/withSiteco
18
18
  export { withEditorChromes } from './enhancers/withEditorChromes';
19
19
  export { withPlaceholder } from './enhancers/withPlaceholder';
20
20
  export { withDatasourceCheck } from './enhancers/withDatasourceCheck';
21
+ export { EditFrame } from './components/EditFrame';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sitecore-jss/sitecore-jss-react",
3
- "version": "21.1.0-canary.99",
3
+ "version": "21.1.1",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "sideEffects": false,
@@ -10,8 +10,7 @@
10
10
  "lint": "eslint ./src/**/*.tsx ./src/**/*.ts",
11
11
  "test": "mocha --require ts-node/register/transpile-only --require ./src/tests/shim.ts ./src/tests/jsdom-setup.ts ./src/tests/enzyme-setup.ts \"./src/**/*.test.ts\" \"./src/**/*.test.tsx\" --exit",
12
12
  "prepublishOnly": "npm run build",
13
- "coverage": "nyc npm test",
14
- "generate-docs": "npx typedoc --plugin typedoc-plugin-markdown --readme none --out ../../ref-docs/sitecore-jss-react src/index.ts --githubPages false"
13
+ "coverage": "nyc npm test"
15
14
  },
16
15
  "engines": {
17
16
  "node": ">=12",
@@ -27,7 +26,7 @@
27
26
  "url": "https://github.com/sitecore/jss/issues"
28
27
  },
29
28
  "devDependencies": {
30
- "@sitecore-feaas/clientside": "^0.1.17",
29
+ "@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",
@@ -62,7 +61,7 @@
62
61
  "react-dom": "^18.2.0"
63
62
  },
64
63
  "dependencies": {
65
- "@sitecore-jss/sitecore-jss": "^21.1.0-canary.99",
64
+ "@sitecore-jss/sitecore-jss": "^21.1.1",
66
65
  "deep-equal": "^2.1.0",
67
66
  "html-react-parser": "^3.0.4",
68
67
  "prop-types": "^15.8.1",
@@ -70,7 +69,7 @@
70
69
  },
71
70
  "description": "",
72
71
  "types": "types/index.d.ts",
73
- "gitHead": "5b1755d4be55645818169d278dd204543d1351d8",
72
+ "gitHead": "ae9d7fc994fa11061b5a164ff6a86b3ccf845a4c",
74
73
  "files": [
75
74
  "dist",
76
75
  "types"
@@ -0,0 +1,11 @@
1
+ import React, { PropsWithChildren } from 'react';
2
+ import { EditFrameDataSource, EditButtonTypes } from '@sitecore-jss/sitecore-jss/utils';
3
+ export interface EditFrameProps {
4
+ dataSource?: EditFrameDataSource;
5
+ buttons?: EditButtonTypes[];
6
+ title?: string;
7
+ tooltip?: string;
8
+ cssClass?: string;
9
+ parameters?: Record<string, string | number | boolean | undefined | null>;
10
+ }
11
+ export declare const EditFrame: React.FC<PropsWithChildren<EditFrameProps>>;
@@ -10,6 +10,7 @@ export interface LinkFieldValue {
10
10
  text?: string;
11
11
  anchor?: string;
12
12
  querystring?: string;
13
+ linktype?: string;
13
14
  }
14
15
  export interface LinkField {
15
16
  value: LinkFieldValue;
@@ -31,7 +32,7 @@ export type LinkProps = React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLA
31
32
  */
32
33
  showLinkTextWithChildrenPresent?: boolean;
33
34
  };
34
- export declare const Link: React.ForwardRefExoticComponent<Pick<LinkProps, "key" | "field" | "editable" | "showLinkTextWithChildrenPresent" | keyof React.AnchorHTMLAttributes<HTMLAnchorElement>> & React.RefAttributes<HTMLAnchorElement>>;
35
+ export declare const Link: React.ForwardRefExoticComponent<Pick<LinkProps, "key" | "editable" | "field" | "showLinkTextWithChildrenPresent" | keyof React.AnchorHTMLAttributes<HTMLAnchorElement>> & React.RefAttributes<HTMLAnchorElement>>;
35
36
  export declare const LinkPropTypes: {
36
37
  field: PropTypes.Validator<NonNullable<NonNullable<PropTypes.InferProps<{
37
38
  href: PropTypes.Requireable<any>;
@@ -81,6 +81,8 @@ export declare class PlaceholderCommon<T extends PlaceholderProps> extends React
81
81
  componentDidUpdate(): void;
82
82
  componentDidCatch(error: Error): void;
83
83
  getSXAParams(rendering: ComponentRendering): {
84
+ styles?: undefined;
85
+ } | {
84
86
  styles: string;
85
87
  };
86
88
  getComponentsForRenderingData(placeholderData: (ComponentRendering | HtmlElementRendering)[]): React.ReactElement<{
package/types/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { constants, enableDebug } from '@sitecore-jss/sitecore-jss';
2
- export { isEditorActive, resetEditorChromes } from '@sitecore-jss/sitecore-jss/utils';
2
+ export { isEditorActive, resetEditorChromes, DefaultEditFrameButton, DefaultEditFrameButtons, EditFrameDataSource, FieldEditButton, WebEditButton, EditButtonTypes, } from '@sitecore-jss/sitecore-jss/utils';
3
3
  export { LayoutService, LayoutServiceData, LayoutServicePageState, LayoutServiceContext, LayoutServiceContextData, GraphQLLayoutService, RestLayoutService, RouteData, Field, Item, HtmlElementRendering, getChildPlaceholder, getFieldValue, ComponentRendering, ComponentFields, ComponentParams, } from '@sitecore-jss/sitecore-jss/layout';
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';
@@ -19,3 +19,4 @@ export { withSitecoreContext, useSitecoreContext, ComponentConsumerProps, WithSi
19
19
  export { withEditorChromes } from './enhancers/withEditorChromes';
20
20
  export { withPlaceholder } from './enhancers/withPlaceholder';
21
21
  export { withDatasourceCheck } from './enhancers/withDatasourceCheck';
22
+ export { EditFrameProps, EditFrame } from './components/EditFrame';