Skip to content

Commit 646e99b

Browse files
Merge pull request #337 from contentstack/develop_v3
fix: remove ^ from preact versions in package json
2 parents f81fdf5 + f177b2b commit 646e99b

14 files changed

Lines changed: 2972 additions & 2705 deletions

.github/workflows/jira.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
project: ${{ secrets.JIRA_PROJECT }}
2222
issuetype: ${{ secrets.JIRA_ISSUE_TYPE }}
2323
summary: |
24-
${{ github.event.pull_request.title }}
24+
Snyk | Vulnerability | ${{ github.event.repository.name }} | ${{ github.event.pull_request.title }}
2525
description: |
2626
PR: ${{ github.event.pull_request.html_url }}
2727

package-lock.json

Lines changed: 2460 additions & 2637 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,14 @@
8686
"url": "https://github.com/contentstack/live-preview-sdk.git"
8787
},
8888
"dependencies": {
89-
"@preact/compat": "^17.1.2",
90-
"@preact/signals": "^1.2.2",
89+
"@preact/compat": "17.1.2",
90+
"@preact/signals": "1.2.2",
9191
"classnames": "^2.5.1",
9292
"deepsignal": "^1.5.0",
9393
"goober": "^2.1.14",
9494
"lodash-es": "^4.17.21",
9595
"mustache": "^4.2.0",
96-
"preact": "^10.19.5",
96+
"preact": "10.19.5",
9797
"uuid": "^8.3.2"
9898
},
9999
"optionalDependencies": {

src/visualBuilder/__test__/index.test.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,10 @@ describe("Visual builder", () => {
190190
test("single line should be contenteditable", async () => {
191191
await triggerAndWaitForClickAction(visualBuilderPostMessage, h1);
192192

193-
expect(h1).toHaveAttribute("contenteditable");
194-
expect(h1).toHaveAttribute("data-cslp-field-type", "singleline");
193+
await waitFor(() => {
194+
expect(h1).toHaveAttribute("contenteditable");
195+
expect(h1).toHaveAttribute("data-cslp-field-type", "singleline");
196+
})
195197
}, { timeout: 20 * 1000 });
196198

197199
test("multi line should be contenteditable", async () => {
@@ -201,8 +203,10 @@ describe("Visual builder", () => {
201203
);
202204
await triggerAndWaitForClickAction(visualBuilderPostMessage, h1);
203205

204-
expect(h1).toHaveAttribute("contenteditable");
205-
expect(h1).toHaveAttribute("data-cslp-field-type", "multiline");
206+
await waitFor(() => {
207+
expect(h1).toHaveAttribute("contenteditable");
208+
expect(h1).toHaveAttribute("data-cslp-field-type", "multiline");
209+
})
206210
}, { timeout: 20 * 1000 });
207211

208212
});

src/visualBuilder/__test__/visualBuilderInput.test.tsx

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -661,59 +661,4 @@ describe("When an inline element is edited in visual builder mode", () => {
661661
});
662662
});
663663
});
664-
describe.skip("number field", () => {
665-
let numberField: HTMLParagraphElement;
666-
let visualBuilder: VisualBuilder;
667-
let overlayWrapper: HTMLDivElement;
668-
669-
beforeAll(() => {
670-
(visualBuilderPostMessage?.send as Mock).mockImplementation(
671-
(eventName: string, args) => {
672-
if (
673-
eventName ===
674-
VisualBuilderPostMessageEvents.GET_FIELD_DATA
675-
) {
676-
return Promise.resolve({
677-
fieldData: "87",
678-
});
679-
}
680-
return Promise.resolve({});
681-
}
682-
);
683-
});
684-
685-
beforeEach(() => {
686-
numberField = document.createElement("p");
687-
numberField.setAttribute(
688-
"data-cslp",
689-
"all_fields.bltapikey.en-us.number"
690-
);
691-
numberField.textContent = "87";
692-
document.body.appendChild(numberField);
693-
visualBuilder = new VisualBuilder();
694-
overlayWrapper = document.querySelector(
695-
".visual-builder__overlay__wrapper"
696-
) as HTMLDivElement;
697-
});
698-
699-
afterEach(() => {
700-
visualBuilder.destroy();
701-
});
702-
703-
test("should only accept characters like a number input", async () => {
704-
await userEvent.click(numberField);
705-
await waitFor(() => {
706-
expect(numberField).toHaveAttribute("contenteditable");
707-
});
708-
await userEvent.keyboard("ab56c78e-h10");
709-
710-
await waitFor(() => {
711-
// TODO cursor is placed at the start, instead of the end
712-
// so typed content appears at the start
713-
expect(numberField).toHaveTextContent(`5678e-1087`);
714-
});
715-
});
716-
}, {
717-
timeout: 20 * 1000
718-
});
719664
});

src/visualBuilder/components/emptyBlock.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export function EmptyBlock(props: EmptyBlockProps): JSX.Element {
5757
)}
5858
onClick={() => sendAddInstanceEvent()}
5959
type="button"
60+
data-testid="visual-builder__empty-block-add-button"
6061
>
6162
<i className="fas fa-plus"></i> &nbsp;
6263
{blockParentName}

src/visualBuilder/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import {
4242
import { useHighlightCommentIcon } from "./eventManager/useHighlightCommentIcon";
4343
import { updateHighlightedCommentIconPosition } from "./generators/generateHighlightedComment";
4444
import { useRecalculateVariantDataCSLPValues } from "./eventManager/useRecalculateVariantDataCSLPValues";
45+
import { VB_EmptyBlockParentClass } from "..";
4546

4647
interface VisualBuilderGlobalStateImpl {
4748
previousSelectedEditableDOM: HTMLElement | Element | null;
@@ -184,7 +185,7 @@ export class VisualBuilder {
184185
);
185186
const emptyBlockParents = Array.from(
186187
document.querySelectorAll(
187-
".visual-builder__empty-block-parent"
188+
`.${VB_EmptyBlockParentClass}`
188189
)
189190
);
190191

src/visualBuilder/listeners/mouseClick.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { FieldSchemaMap } from "../utils/fieldSchemaMap";
2121
import { isFieldDisabled } from "../utils/isFieldDisabled";
2222
import EventListenerHandlerParams from "./types";
2323
import { toggleHighlightedCommentIconDisplay } from "../generators/generateHighlightedComment";
24+
import { VB_EmptyBlockParentClass } from "../..";
2425

2526
type HandleBuilderInteractionParams = Omit<
2627
EventListenerHandlerParams,
@@ -110,7 +111,7 @@ async function handleBuilderInteraction(
110111
// if the selected element is our empty block element, return
111112
if (
112113
editableElement.classList.contains(
113-
"visual-builder__empty-block-parent"
114+
VB_EmptyBlockParentClass
114115
) ||
115116
editableElement.classList.contains("visual-builder__empty-block")
116117
) {

src/visualBuilder/listeners/mouseHover.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import EventListenerHandlerParams from "./types";
1010
import { VisualBuilder } from "..";
1111
import { addHoverOutline } from "../generators/generateHoverOutline";
1212
import { visualBuilderStyles } from "../visualBuilder.style";
13+
import { VB_EmptyBlockParentClass } from "../..";
1314

1415
export interface HandleMouseHoverParams
1516
extends Pick<
@@ -202,7 +203,7 @@ async function handleMouseHover(params: HandleMouseHoverParams): Promise<void> {
202203

203204
if (
204205
!editableElement.classList.contains(
205-
"visual-builder__empty-block-parent"
206+
VB_EmptyBlockParentClass
206207
) &&
207208
!editableElement.classList.contains("visual-builder__empty-block")
208209
) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { hasPostMessageError } from '../errorHandling';
2+
3+
describe('hasPostMessageError', () => {
4+
it('should return true if obj.error is true', () => {
5+
const obj = { error: true };
6+
expect(hasPostMessageError(obj)).toBe(true);
7+
});
8+
9+
it('should return false if obj.error is false', () => {
10+
const obj = { error: false };
11+
expect(hasPostMessageError(obj)).toBe(false);
12+
});
13+
14+
it('should return false if obj.error is undefined', () => {
15+
const obj = {};
16+
expect(hasPostMessageError(obj)).toBe(false);
17+
});
18+
19+
it('should return false if obj is null', () => {
20+
const obj = null;
21+
expect(hasPostMessageError(obj)).toBe(false);
22+
});
23+
24+
it('should return false if obj is not an object', () => {
25+
const obj = 'not an object';
26+
expect(hasPostMessageError(obj)).toBe(false);
27+
});
28+
});

0 commit comments

Comments
 (0)