Skip to content

Commit 152b38e

Browse files
committed
fix: added support to add menu entries
1 parent 7d2389b commit 152b38e

File tree

5 files changed

+51
-3
lines changed

5 files changed

+51
-3
lines changed

packages/designer/src/Components/Drawers/NavDrawer.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { useQuickFormDefinition } from "../../Contexts/QuickFormDefContext";
1616
import SlideTreeItem from "./SlideTreeItem";
1717
import QuestionTreeItem from "./QuestionTreeItem";
1818
import { CodeIcon } from "../Icons/CodeIcon";
19+
import { getOrCreateQuickFormViewContainer } from "../Views/DesignerViews";
1920

2021
type NavDrawerProps = {
2122
isOpen: boolean;
@@ -28,6 +29,8 @@ export const NavDrawer = ({ setIsOpen, isOpen, newSlideNodes }: NavDrawerProps)
2829
const { setView, view, setActiveSlide, activeSlide, quickformpayload, updateQuickFormPayload, setActiveQuestion, activeQuestion, designerLocale } = useQuickFormDefinition();
2930
const { actions: { history, deserialize } } = useEditorChanges();
3031

32+
const views = getOrCreateQuickFormViewContainer();
33+
3134
return (
3235
<Drawer
3336
type="inline"
@@ -77,6 +80,7 @@ export const NavDrawer = ({ setIsOpen, isOpen, newSlideNodes }: NavDrawerProps)
7780
<ViewTreeItem title="Ending" icon={<EndingViewIcon />} setView={setView} selectedView={view} viewName="ending" />
7881
<ViewTreeItem title="Settings" icon={<SettingsViewIcon />} setView={setView} selectedView={view} viewName="settings" />
7982
<ViewTreeItem title="Source view" icon={<CodeIcon />} setView={setView} selectedView={view} viewName="sourceView" />
83+
{Object.entries(views).map(([key, _view]) => <ViewTreeItem childName={quickformpayload['__designer'][`active${_view.navKey}`]} key={key} title={_view.title} icon={_view.icon} setView={setView} selectedView={view} viewName={key} children={_view.nav && <_view.nav />} />)}
8084
</Tree>
8185
</DrawerBody>
8286
</Drawer>

packages/designer/src/Components/Drawers/QuestionTreeItem.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { useMemo } from "react";
1515
import { QuestionJsonModel } from "@eavfw/quickform-core/src/model/json-definitions/JsonDataModels";
1616
import { CaretUpFilled, CaretDownFilled } from "@fluentui/react-icons"
1717

18-
const useNavDrawerStyles = makeStyles({
18+
export const useNavDrawerStyles = makeStyles({
1919
actions: {
2020
backgroundColor: tokens.colorNeutralBackground1Hover,
2121
position: "absolute",

packages/designer/src/Components/Views/DesignerViews.tsx

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import React, { ReactNode } from "react"
12
import { useQuickFormDefinition } from "../../Contexts/QuickFormDefContext"
23
import { ViewNames } from "../../Types/ViewNames"
34
import { QuickFormEndingSettingsView } from "./QuickFormEndingSettingsView"
@@ -7,11 +8,51 @@ import { QuickFormQuestionsView } from "./QuickFormQuestionsView"
78
import { QuickFormSettingsView } from "./QuickFormSettingsView"
89
import { QuickFormSourceView } from "./QuickFormSourceView"
910
import { QuickFormSubmitSettingsView } from "./QuickFormSubmitSettingsView"
11+
import { TreeItemLayoutProps } from "@fluentui/react-components"
1012

1113

14+
export type QuickFormView = {
15+
16+
view: React.FC;
17+
nav?: React.FC;
18+
title: string;
19+
navKey: string;
20+
icon: TreeItemLayoutProps["iconBefore"]
21+
}
22+
23+
export type QuickFormViews = {
24+
25+
[key: string]: QuickFormView;
26+
27+
}
28+
29+
declare global {
30+
var __eav_qf_views: QuickFormViews | undefined;
31+
}
32+
33+
export function getOrCreateQuickFormViewContainer(): QuickFormViews {
34+
if (!globalThis.__eav_qf_views) {
35+
36+
globalThis.__eav_qf_views = {};
37+
;
38+
}
39+
return globalThis.__eav_qf_views;
40+
}
41+
42+
export function registerQuickformView<Key extends keyof QuickFormViews>(name: Key, instance: (QuickFormViews)[Key]) {
43+
let services = getOrCreateQuickFormViewContainer();
44+
services[name] = instance;
45+
}
46+
1247
export const DesignerViews = () => {
1348

1449
const { updateQuickFormPayload, quickformpayload, activeQuestion, activeSlide, view } = useQuickFormDefinition();
50+
const views = getOrCreateQuickFormViewContainer();
51+
if (view in views) {
52+
53+
const View = views[view]?.view;
54+
return <View />
55+
}
1556

1657
return <>
1758
{view === "settings" && <QuickFormSettingsView />}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11

2-
export { registerInputControlDesignerField } from "./Views/QuickFormQuestionsView";
2+
export { registerInputControlDesignerField } from "./Views/QuickFormQuestionsView";
3+
export * from "./Views/DesignerViews";

packages/designer/src/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@
22
export * from "./Components";
33
import "./Designer";
44
export * from "./QuickFormDesigner";
5-
export * from "./Contexts/QuickFormDefContext";
5+
export * from "./Contexts/QuickFormDefContext";
6+
export * from "./Utils/makeid";
7+
export * from "./Types/QuickFormDefinition";

0 commit comments

Comments
 (0)