@webiny/app-admin 6.1.0-beta.3 → 6.2.0-beta.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/base/Admin.js +2 -0
- package/base/Admin.js.map +1 -1
- package/base/Base/DefaultFieldRenderers.d.ts +2 -0
- package/base/Base/DefaultFieldRenderers.js +15 -0
- package/base/Base/DefaultFieldRenderers.js.map +1 -0
- package/base/Base/FieldRenderers/SelectRenderer.d.ts +5 -0
- package/base/Base/FieldRenderers/SelectRenderer.js +24 -0
- package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/TextRenderer.d.ts +5 -0
- package/base/Base/FieldRenderers/TextRenderer.js +21 -0
- package/base/Base/FieldRenderers/TextRenderer.js.map +1 -0
- package/base/Base/Menus.js +7 -0
- package/base/Base/Menus.js.map +1 -1
- package/base/Base.js +2 -1
- package/base/Base.js.map +1 -1
- package/base/createRootContainer.js +2 -0
- package/base/createRootContainer.js.map +1 -1
- package/components/Dialogs/DialogParamsContext.d.ts +6 -0
- package/components/Dialogs/DialogParamsContext.js +11 -0
- package/components/Dialogs/DialogParamsContext.js.map +1 -0
- package/components/Dialogs/DialogsContext.d.ts +2 -0
- package/components/Dialogs/DialogsContext.js +32 -4
- package/components/Dialogs/DialogsContext.js.map +1 -1
- package/components/OptionsMenu/OptionsMenu.d.ts +6 -0
- package/components/OptionsMenu/OptionsMenu.js +3 -3
- package/components/OptionsMenu/OptionsMenu.js.map +1 -1
- package/components/RegisterFeature.js +5 -5
- package/components/RegisterFeature.js.map +1 -1
- package/components/Wcp.d.ts +2 -0
- package/components/Wcp.js +7 -0
- package/components/Wcp.js.map +1 -1
- package/config/AdminConfig/Dialog.d.ts +10 -0
- package/config/AdminConfig/Dialog.js +21 -0
- package/config/AdminConfig/Dialog.js.map +1 -0
- package/config/AdminConfig/FieldRenderer.d.ts +11 -0
- package/config/AdminConfig/FieldRenderer.js +21 -0
- package/config/AdminConfig/FieldRenderer.js.map +1 -0
- package/config/AdminConfig/Form.d.ts +3 -0
- package/config/AdminConfig/Form.js +6 -0
- package/config/AdminConfig/Form.js.map +1 -0
- package/config/AdminConfig.d.ts +10 -0
- package/config/AdminConfig.js +7 -1
- package/config/AdminConfig.js.map +1 -1
- package/exports/admin/security.d.ts +6 -0
- package/exports/admin/security.js +5 -0
- package/exports/admin/security.js.map +1 -1
- package/exports/admin/ui.d.ts +2 -0
- package/exports/admin/ui.js +2 -0
- package/exports/admin/ui.js.map +1 -1
- package/exports/admin.d.ts +0 -3
- package/exports/admin.js +0 -3
- package/exports/admin.js.map +1 -1
- package/features/formModel/Field.d.ts +52 -0
- package/features/formModel/Field.js +201 -0
- package/features/formModel/Field.js.map +1 -0
- package/features/formModel/FieldBuilder.d.ts +45 -0
- package/features/formModel/FieldBuilder.js +158 -0
- package/features/formModel/FieldBuilder.js.map +1 -0
- package/features/formModel/FieldBuilder.test.js +106 -0
- package/features/formModel/FieldBuilder.test.js.map +1 -0
- package/features/formModel/FormModel.d.ts +61 -0
- package/features/formModel/FormModel.js +573 -0
- package/features/formModel/FormModel.js.map +1 -0
- package/features/formModel/FormModel.test.d.ts +1 -0
- package/features/formModel/FormModel.test.js +1140 -0
- package/features/formModel/FormModel.test.js.map +1 -0
- package/features/formModel/FormModelFactory.d.ts +9 -0
- package/features/formModel/FormModelFactory.js +13 -0
- package/features/formModel/FormModelFactory.js.map +1 -0
- package/features/formModel/FormView.d.ts +23 -0
- package/features/formModel/FormView.js +138 -0
- package/features/formModel/FormView.js.map +1 -0
- package/features/formModel/abstractions.d.ts +286 -0
- package/features/formModel/abstractions.js +54 -0
- package/features/formModel/abstractions.js.map +1 -0
- package/features/formModel/feature.d.ts +3 -0
- package/features/formModel/feature.js +16 -0
- package/features/formModel/feature.js.map +1 -0
- package/features/formModel/index.d.ts +10 -0
- package/features/formModel/index.js +14 -0
- package/features/formModel/index.js.map +1 -0
- package/features/formModel/useFieldRenderers.d.ts +2 -0
- package/features/formModel/useFieldRenderers.js +19 -0
- package/features/formModel/useFieldRenderers.js.map +1 -0
- package/features/security/LogIn/LogInGateway.d.ts +2 -2
- package/features/security/LogIn/LogInGateway.js +2 -2
- package/features/security/LogIn/LogInGateway.js.map +1 -1
- package/features/wcp/WcpGateway.d.ts +2 -2
- package/features/wcp/WcpGateway.js +2 -2
- package/features/wcp/WcpGateway.js.map +1 -1
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +1 -0
- package/hooks/index.js.map +1 -1
- package/hooks/useDialog.d.ts +9 -29
- package/hooks/useDialog.js +16 -24
- package/hooks/useDialog.js.map +1 -1
- package/hooks/useOpenDialog.d.ts +7 -0
- package/hooks/useOpenDialog.js +18 -0
- package/hooks/useOpenDialog.js.map +1 -0
- package/index.d.ts +5 -0
- package/index.js +5 -0
- package/index.js.map +1 -1
- package/package.json +30 -30
- package/permissions/createHasPermission.d.ts +3 -2
- package/permissions/createHasPermission.js +4 -8
- package/permissions/createHasPermission.js.map +1 -1
- package/permissions/createPermissions.d.ts +6 -0
- package/permissions/createPermissions.js +201 -0
- package/permissions/createPermissions.js.map +1 -0
- package/permissions/createPermissions.test.d.ts +1 -0
- package/permissions/createPermissions.test.js +177 -0
- package/permissions/createPermissions.test.js.map +1 -0
- package/permissions/index.d.ts +1 -0
- package/permissions/index.js +1 -0
- package/permissions/index.js.map +1 -1
- package/permissions/types.d.ts +5 -0
- package/permissions/types.js.map +1 -1
- package/permissions/usePermissions.d.ts +2 -1
- package/permissions/usePermissions.js +4 -175
- package/permissions/usePermissions.js.map +1 -1
- package/presentation/installation/presenters/SystemInstaller/SystemInstallerGateway.d.ts +2 -2
- package/presentation/installation/presenters/SystemInstaller/SystemInstallerGateway.js +2 -2
- package/presentation/installation/presenters/SystemInstaller/SystemInstallerGateway.js.map +1 -1
- package/permissions/createHasPermission.test.js +0 -206
- package/permissions/createHasPermission.test.js.map +0 -1
- /package/{permissions/createHasPermission.test.d.ts → features/formModel/FieldBuilder.test.d.ts} +0 -0
package/components/Wcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useWcp","
|
|
1
|
+
{"version":3,"names":["React","useWcp","CanUseMultiTenancy","children","wcp","canUseFeature","createElement","Fragment","CanUseTeams","canUseTeams","CanUsePrivateFiles","canUsePrivateFiles","CanUseFileManagerThreatDetection","canUseFileManagerThreatDetection","CanUseWorkflows","canUseWorkflows","CanUseHcmsFieldPermissions","canUseHcmsFieldPermissions","Wcp"],"sources":["Wcp.tsx"],"sourcesContent":["import React from \"react\";\nimport { useWcp } from \"~/presentation/wcp/useWcp.js\";\n\ninterface ChildrenProps {\n children: React.ReactNode;\n}\n\nfunction CanUseMultiTenancy({ children }: ChildrenProps) {\n const wcp = useWcp();\n return wcp.canUseFeature(\"multiTenancy\") ? <>{children}</> : null;\n}\n\nfunction CanUseTeams({ children }: ChildrenProps) {\n const wcp = useWcp();\n return wcp.canUseTeams() ? <>{children}</> : null;\n}\n\nfunction CanUsePrivateFiles({ children }: ChildrenProps) {\n const wcp = useWcp();\n return wcp.canUsePrivateFiles() ? <>{children}</> : null;\n}\n\nfunction CanUseFileManagerThreatDetection({ children }: ChildrenProps) {\n const wcp = useWcp();\n return wcp.canUseFileManagerThreatDetection() ? <>{children}</> : null;\n}\n\nfunction CanUseWorkflows({ children }: ChildrenProps) {\n const wcp = useWcp();\n return wcp.canUseWorkflows() ? <>{children}</> : null;\n}\n\nfunction CanUseHcmsFieldPermissions({ children }: ChildrenProps) {\n const wcp = useWcp();\n return wcp.canUseHcmsFieldPermissions() ? <>{children}</> : null;\n}\n\nexport const Wcp = {\n CanUseMultiTenancy,\n CanUseTeams,\n CanUsePrivateFiles,\n CanUseFileManagerThreatDetection,\n CanUseWorkflows,\n CanUseHcmsFieldPermissions\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM;AAMf,SAASC,kBAAkBA,CAAC;EAAEC;AAAwB,CAAC,EAAE;EACrD,MAAMC,GAAG,GAAGH,MAAM,CAAC,CAAC;EACpB,OAAOG,GAAG,CAACC,aAAa,CAAC,cAAc,CAAC,gBAAGL,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AACrE;AAEA,SAASK,WAAWA,CAAC;EAAEL;AAAwB,CAAC,EAAE;EAC9C,MAAMC,GAAG,GAAGH,MAAM,CAAC,CAAC;EACpB,OAAOG,GAAG,CAACK,WAAW,CAAC,CAAC,gBAAGT,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AACrD;AAEA,SAASO,kBAAkBA,CAAC;EAAEP;AAAwB,CAAC,EAAE;EACrD,MAAMC,GAAG,GAAGH,MAAM,CAAC,CAAC;EACpB,OAAOG,GAAG,CAACO,kBAAkB,CAAC,CAAC,gBAAGX,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AAC5D;AAEA,SAASS,gCAAgCA,CAAC;EAAET;AAAwB,CAAC,EAAE;EACnE,MAAMC,GAAG,GAAGH,MAAM,CAAC,CAAC;EACpB,OAAOG,GAAG,CAACS,gCAAgC,CAAC,CAAC,gBAAGb,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AAC1E;AAEA,SAASW,eAAeA,CAAC;EAAEX;AAAwB,CAAC,EAAE;EAClD,MAAMC,GAAG,GAAGH,MAAM,CAAC,CAAC;EACpB,OAAOG,GAAG,CAACW,eAAe,CAAC,CAAC,gBAAGf,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AACzD;AAEA,SAASa,0BAA0BA,CAAC;EAAEb;AAAwB,CAAC,EAAE;EAC7D,MAAMC,GAAG,GAAGH,MAAM,CAAC,CAAC;EACpB,OAAOG,GAAG,CAACa,0BAA0B,CAAC,CAAC,gBAAGjB,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AACpE;AAEA,OAAO,MAAMe,GAAG,GAAG;EACfhB,kBAAkB;EAClBM,WAAW;EACXE,kBAAkB;EAClBE,gCAAgC;EAChCE,eAAe;EACfE;AACJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface DialogConfig {
|
|
3
|
+
name: string;
|
|
4
|
+
element: React.ReactElement;
|
|
5
|
+
}
|
|
6
|
+
export interface DialogProps {
|
|
7
|
+
name: string;
|
|
8
|
+
element: React.ReactElement;
|
|
9
|
+
}
|
|
10
|
+
export declare const Dialog: ({ name, element }: DialogProps) => React.JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ConnectToProperties, Property, useIdGenerator } from "@webiny/react-properties";
|
|
3
|
+
export const Dialog = ({
|
|
4
|
+
name,
|
|
5
|
+
element
|
|
6
|
+
}) => {
|
|
7
|
+
const getId = useIdGenerator("Dialog");
|
|
8
|
+
return /*#__PURE__*/React.createElement(ConnectToProperties, {
|
|
9
|
+
name: "AdminConfig"
|
|
10
|
+
}, /*#__PURE__*/React.createElement(Property, {
|
|
11
|
+
id: getId(name),
|
|
12
|
+
name: "dialogs",
|
|
13
|
+
array: true,
|
|
14
|
+
value: {
|
|
15
|
+
name,
|
|
16
|
+
element
|
|
17
|
+
}
|
|
18
|
+
}));
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=Dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","ConnectToProperties","Property","useIdGenerator","Dialog","name","element","getId","createElement","id","array","value"],"sources":["Dialog.tsx"],"sourcesContent":["import React from \"react\";\nimport { ConnectToProperties, Property, useIdGenerator } from \"@webiny/react-properties\";\n\nexport interface DialogConfig {\n name: string;\n element: React.ReactElement;\n}\n\nexport interface DialogProps {\n name: string;\n element: React.ReactElement;\n}\n\nexport const Dialog = ({ name, element }: DialogProps) => {\n const getId = useIdGenerator(\"Dialog\");\n\n return (\n <ConnectToProperties name={\"AdminConfig\"}>\n <Property id={getId(name)} name={\"dialogs\"} array={true} value={{ name, element }} />\n </ConnectToProperties>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,mBAAmB,EAAEC,QAAQ,EAAEC,cAAc,QAAQ,0BAA0B;AAYxF,OAAO,MAAMC,MAAM,GAAGA,CAAC;EAAEC,IAAI;EAAEC;AAAqB,CAAC,KAAK;EACtD,MAAMC,KAAK,GAAGJ,cAAc,CAAC,QAAQ,CAAC;EAEtC,oBACIH,KAAA,CAAAQ,aAAA,CAACP,mBAAmB;IAACI,IAAI,EAAE;EAAc,gBACrCL,KAAA,CAAAQ,aAAA,CAACN,QAAQ;IAACO,EAAE,EAAEF,KAAK,CAACF,IAAI,CAAE;IAACA,IAAI,EAAE,SAAU;IAACK,KAAK,EAAE,IAAK;IAACC,KAAK,EAAE;MAAEN,IAAI;MAAEC;IAAQ;EAAE,CAAE,CACnE,CAAC;AAE9B,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { FieldRendererComponent } from "../../features/formModel/FormView.js";
|
|
3
|
+
export interface FieldRendererConfig {
|
|
4
|
+
name: string;
|
|
5
|
+
component: FieldRendererComponent;
|
|
6
|
+
}
|
|
7
|
+
export interface FieldRendererProps {
|
|
8
|
+
name: string;
|
|
9
|
+
component: FieldRendererComponent;
|
|
10
|
+
}
|
|
11
|
+
export declare const FieldRenderer: ({ name, component }: FieldRendererProps) => React.JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ConnectToProperties, Property, useIdGenerator } from "@webiny/react-properties";
|
|
3
|
+
export const FieldRenderer = ({
|
|
4
|
+
name,
|
|
5
|
+
component
|
|
6
|
+
}) => {
|
|
7
|
+
const getId = useIdGenerator("FormFieldRenderer");
|
|
8
|
+
return /*#__PURE__*/React.createElement(ConnectToProperties, {
|
|
9
|
+
name: "AdminConfig"
|
|
10
|
+
}, /*#__PURE__*/React.createElement(Property, {
|
|
11
|
+
id: getId(name),
|
|
12
|
+
name: "fieldRenderers",
|
|
13
|
+
array: true,
|
|
14
|
+
value: {
|
|
15
|
+
name,
|
|
16
|
+
component
|
|
17
|
+
}
|
|
18
|
+
}));
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=FieldRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","ConnectToProperties","Property","useIdGenerator","FieldRenderer","name","component","getId","createElement","id","array","value"],"sources":["FieldRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { ConnectToProperties, Property, useIdGenerator } from \"@webiny/react-properties\";\nimport type { FieldRendererComponent } from \"../../features/formModel/FormView.js\";\n\nexport interface FieldRendererConfig {\n name: string;\n component: FieldRendererComponent;\n}\n\nexport interface FieldRendererProps {\n name: string;\n component: FieldRendererComponent;\n}\n\nexport const FieldRenderer = ({ name, component }: FieldRendererProps) => {\n const getId = useIdGenerator(\"FormFieldRenderer\");\n\n return (\n <ConnectToProperties name={\"AdminConfig\"}>\n <Property\n id={getId(name)}\n name={\"fieldRenderers\"}\n array={true}\n value={{ name, component }}\n />\n </ConnectToProperties>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,mBAAmB,EAAEC,QAAQ,EAAEC,cAAc,QAAQ,0BAA0B;AAaxF,OAAO,MAAMC,aAAa,GAAGA,CAAC;EAAEC,IAAI;EAAEC;AAA8B,CAAC,KAAK;EACtE,MAAMC,KAAK,GAAGJ,cAAc,CAAC,mBAAmB,CAAC;EAEjD,oBACIH,KAAA,CAAAQ,aAAA,CAACP,mBAAmB;IAACI,IAAI,EAAE;EAAc,gBACrCL,KAAA,CAAAQ,aAAA,CAACN,QAAQ;IACLO,EAAE,EAAEF,KAAK,CAACF,IAAI,CAAE;IAChBA,IAAI,EAAE,gBAAiB;IACvBK,KAAK,EAAE,IAAK;IACZC,KAAK,EAAE;MAAEN,IAAI;MAAEC;IAAU;EAAE,CAC9B,CACgB,CAAC;AAE9B,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FieldRenderer","Form"],"sources":["Form.ts"],"sourcesContent":["import { FieldRenderer } from \"./FieldRenderer.js\";\n\nexport const Form = {\n FieldRenderer\n};\n"],"mappings":"AAAA,SAASA,aAAa;AAEtB,OAAO,MAAMC,IAAI,GAAG;EAChBD;AACJ,CAAC","ignoreList":[]}
|
package/config/AdminConfig.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import type { SupportMenuConfig } from "./AdminConfig/Menu/SupportMenu.js";
|
|
|
4
4
|
import type { UserMenuConfig } from "./AdminConfig/Menu/UserMenu.js";
|
|
5
5
|
import { type WidgetConfig } from "./AdminConfig/Widget.js";
|
|
6
6
|
import type { PermissionRendererConfig } from "../permissions/types.js";
|
|
7
|
+
import type { DialogConfig } from "./AdminConfig/Dialog.js";
|
|
8
|
+
import type { FieldRendererConfig } from "./AdminConfig/FieldRenderer.js";
|
|
7
9
|
import type { EditorTheme } from "@webiny/lexical-theme";
|
|
8
10
|
export declare const AdminWithConfig: (({ onProperties, children }: import("./createAdminConfig.js").WithConfigProps) => React.JSX.Element) & {
|
|
9
11
|
displayName: string;
|
|
@@ -22,6 +24,8 @@ export declare const useAdminConfig: () => {
|
|
|
22
24
|
widgets: WidgetConfig[];
|
|
23
25
|
permissionRenderers: PermissionRendererConfig[];
|
|
24
26
|
lexicalTheme: EditorTheme;
|
|
27
|
+
dialogs: DialogConfig[];
|
|
28
|
+
fieldRenderers: FieldRendererConfig[];
|
|
25
29
|
};
|
|
26
30
|
export interface PublicProps {
|
|
27
31
|
children: React.ReactNode;
|
|
@@ -470,6 +474,10 @@ export declare const AdminConfig: (({ children }: PrivateProps) => React.JSX.Ele
|
|
|
470
474
|
List: (props: import("./AdminConfig/LexicalTheme/Typography.js").ListProps) => React.JSX.Element;
|
|
471
475
|
};
|
|
472
476
|
};
|
|
477
|
+
Dialog: ({ name, element }: import("./AdminConfig/Dialog.js").DialogProps) => React.JSX.Element;
|
|
478
|
+
Form: {
|
|
479
|
+
FieldRenderer: ({ name, component }: import("./AdminConfig/FieldRenderer.js").FieldRendererProps) => React.JSX.Element;
|
|
480
|
+
};
|
|
473
481
|
useAdminConfig: () => {
|
|
474
482
|
menus: MenuConfig[];
|
|
475
483
|
userMenus: UserMenuConfig[];
|
|
@@ -482,5 +490,7 @@ export declare const AdminConfig: (({ children }: PrivateProps) => React.JSX.Ele
|
|
|
482
490
|
widgets: WidgetConfig[];
|
|
483
491
|
permissionRenderers: PermissionRendererConfig[];
|
|
484
492
|
lexicalTheme: EditorTheme;
|
|
493
|
+
dialogs: DialogConfig[];
|
|
494
|
+
fieldRenderers: FieldRendererConfig[];
|
|
485
495
|
};
|
|
486
496
|
};
|
package/config/AdminConfig.js
CHANGED
|
@@ -9,6 +9,8 @@ import { Security } from "./AdminConfig/Security.js";
|
|
|
9
9
|
import { LexicalTheme } from "./AdminConfig/LexicalTheme.js";
|
|
10
10
|
import { Title } from "./AdminConfig/Title.js";
|
|
11
11
|
import { Logo } from "./AdminConfig/Logo.js";
|
|
12
|
+
import { Dialog } from "./AdminConfig/Dialog.js";
|
|
13
|
+
import { Form } from "./AdminConfig/Form.js";
|
|
12
14
|
import { createAdminConfig } from "./createAdminConfig.js";
|
|
13
15
|
import { createLexicalTokens } from "@webiny/lexical-theme/createLexicalEditorTokens.js";
|
|
14
16
|
const base = createAdminConfig();
|
|
@@ -43,7 +45,9 @@ export const useAdminConfig = () => {
|
|
|
43
45
|
},
|
|
44
46
|
widgets: baseConfig.widgets ?? [],
|
|
45
47
|
permissionRenderers: baseConfig.permissionRenderers ?? [],
|
|
46
|
-
lexicalTheme
|
|
48
|
+
lexicalTheme,
|
|
49
|
+
dialogs: baseConfig.dialogs ?? [],
|
|
50
|
+
fieldRenderers: baseConfig.fieldRenderers ?? []
|
|
47
51
|
};
|
|
48
52
|
};
|
|
49
53
|
export const Public = ({
|
|
@@ -67,6 +71,8 @@ export const AdminConfig = Object.assign(Private, {
|
|
|
67
71
|
Dashboard,
|
|
68
72
|
Security,
|
|
69
73
|
LexicalTheme,
|
|
74
|
+
Dialog,
|
|
75
|
+
Form,
|
|
70
76
|
useAdminConfig
|
|
71
77
|
});
|
|
72
78
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createProvider","Menu","Tenant","Route","Theme","Dashboard","Security","LexicalTheme","Title","Logo","createAdminConfig","createLexicalTokens","base","AdminWithConfig","Object","assign","WithConfig","displayName","AdminConfigPlugin","createElement","ApplyProtectedConfig","AdminConfigProvider","Original","children","ApplyPublicConfig","lexicalTokens","useAdminConfig","baseConfig","useConfig","lexicalTheme","colors","typography","tokens","menus","userMenus","supportMenus","title","logo","squareLogo","horizontalLogo","widgets","permissionRenderers","Public","PublicConfig","Private","PrivateConfig","AdminConfig"],"sources":["AdminConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { createProvider } from \"@webiny/app\";\nimport { Menu, type MenuConfig } from \"./AdminConfig/Menu.js\";\nimport type { TenantConfig } from \"./AdminConfig/Tenant.js\";\nimport { Tenant } from \"./AdminConfig/Tenant.js\";\nimport type { SupportMenuConfig } from \"./AdminConfig/Menu/SupportMenu.js\";\nimport type { UserMenuConfig } from \"./AdminConfig/Menu/UserMenu.js\";\nimport { Route } from \"./AdminConfig/Route.js\";\nimport { Theme } from \"./AdminConfig/Theme.js\";\nimport { Dashboard } from \"./AdminConfig/Dashboard.js\";\nimport { type WidgetConfig } from \"./AdminConfig/Widget.js\";\nimport { Security } from \"./AdminConfig/Security.js\";\nimport type { PermissionRendererConfig } from \"../permissions/types.js\";\nimport { LexicalTheme } from \"./AdminConfig/LexicalTheme.js\";\nimport { Title } from \"./AdminConfig/Title.js\";\nimport { Logo } from \"./AdminConfig/Logo.js\";\nimport { createAdminConfig } from \"./createAdminConfig.js\";\nimport type { EditorTheme } from \"@webiny/lexical-theme\";\nimport { createLexicalTokens } from \"@webiny/lexical-theme/createLexicalEditorTokens.js\";\n\nconst base = createAdminConfig<AdminConfig>();\n\nexport const AdminWithConfig = Object.assign(base.WithConfig, {\n displayName: \"AdminWithConfig\"\n});\n\ninterface AdminConfig {\n menus: MenuConfig[];\n supportMenus: SupportMenuConfig[];\n userMenus: UserMenuConfig[];\n tenant: TenantConfig;\n title: string;\n squareLogo: React.ReactNode;\n horizontalLogo: React.ReactNode;\n widgets: WidgetConfig[];\n permissionRenderers: PermissionRendererConfig[];\n lexicalTheme: EditorTheme;\n}\n\n/* Once the app fully renders (after the LoginScreen), apply protected configs. */\nexport const AdminConfigPlugin = <base.ApplyProtectedConfig />;\n\nexport const AdminConfigProvider = createProvider(Original => {\n return function AdminConfigProvider({ children }) {\n return (\n <AdminWithConfig>\n <base.ApplyPublicConfig />\n <Original>{children}</Original>\n </AdminWithConfig>\n );\n };\n});\n\nconst lexicalTokens = createLexicalTokens(\"wa-lx-\");\n\nexport const useAdminConfig = () => {\n const baseConfig = base.useConfig();\n\n const lexicalTheme: EditorTheme = {\n colors: baseConfig.lexicalTheme?.colors,\n typography: baseConfig.lexicalTheme?.typography || {},\n tokens: lexicalTokens\n };\n\n return {\n menus: baseConfig.menus ?? [],\n userMenus: baseConfig.userMenus ?? [],\n supportMenus: baseConfig.supportMenus ?? [],\n title: baseConfig.title,\n logo: {\n squareLogo: baseConfig.squareLogo,\n horizontalLogo: baseConfig.horizontalLogo\n },\n widgets: baseConfig.widgets ?? [],\n permissionRenderers: baseConfig.permissionRenderers ?? [],\n lexicalTheme\n };\n};\n\nexport interface PublicProps {\n children: React.ReactNode;\n}\n\nexport const Public = ({ children }: PublicProps) => {\n return <base.PublicConfig>{children}</base.PublicConfig>;\n};\n\nexport interface PrivateProps {\n children: React.ReactNode;\n}\n\nexport const Private = ({ children }: PrivateProps) => {\n return <base.PrivateConfig>{children}</base.PrivateConfig>;\n};\n\nexport const AdminConfig = Object.assign(Private, {\n Public,\n Theme,\n Menu,\n Route,\n Tenant,\n Title,\n Logo,\n Dashboard,\n Security,\n LexicalTheme,\n useAdminConfig\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,aAAa;AAC5C,SAASC,IAAI;AAEb,SAASC,MAAM;AAGf,SAASC,KAAK;AACd,SAASC,KAAK;AACd,SAASC,SAAS;AAElB,SAASC,QAAQ;AAEjB,SAASC,YAAY;AACrB,SAASC,KAAK;AACd,SAASC,IAAI;AACb,SAASC,iBAAiB;AAE1B,SAASC,mBAAmB,QAAQ,oDAAoD;AAExF,MAAMC,IAAI,GAAGF,iBAAiB,CAAc,CAAC;AAE7C,OAAO,MAAMG,eAAe,GAAGC,MAAM,CAACC,MAAM,CAACH,IAAI,CAACI,UAAU,EAAE;EAC1DC,WAAW,EAAE;AACjB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["React","createProvider","Menu","Tenant","Route","Theme","Dashboard","Security","LexicalTheme","Title","Logo","Dialog","Form","createAdminConfig","createLexicalTokens","base","AdminWithConfig","Object","assign","WithConfig","displayName","AdminConfigPlugin","createElement","ApplyProtectedConfig","AdminConfigProvider","Original","children","ApplyPublicConfig","lexicalTokens","useAdminConfig","baseConfig","useConfig","lexicalTheme","colors","typography","tokens","menus","userMenus","supportMenus","title","logo","squareLogo","horizontalLogo","widgets","permissionRenderers","dialogs","fieldRenderers","Public","PublicConfig","Private","PrivateConfig","AdminConfig"],"sources":["AdminConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { createProvider } from \"@webiny/app\";\nimport { Menu, type MenuConfig } from \"./AdminConfig/Menu.js\";\nimport type { TenantConfig } from \"./AdminConfig/Tenant.js\";\nimport { Tenant } from \"./AdminConfig/Tenant.js\";\nimport type { SupportMenuConfig } from \"./AdminConfig/Menu/SupportMenu.js\";\nimport type { UserMenuConfig } from \"./AdminConfig/Menu/UserMenu.js\";\nimport { Route } from \"./AdminConfig/Route.js\";\nimport { Theme } from \"./AdminConfig/Theme.js\";\nimport { Dashboard } from \"./AdminConfig/Dashboard.js\";\nimport { type WidgetConfig } from \"./AdminConfig/Widget.js\";\nimport { Security } from \"./AdminConfig/Security.js\";\nimport type { PermissionRendererConfig } from \"../permissions/types.js\";\nimport { LexicalTheme } from \"./AdminConfig/LexicalTheme.js\";\nimport { Title } from \"./AdminConfig/Title.js\";\nimport { Logo } from \"./AdminConfig/Logo.js\";\nimport { Dialog } from \"./AdminConfig/Dialog.js\";\nimport type { DialogConfig } from \"./AdminConfig/Dialog.js\";\nimport { Form } from \"./AdminConfig/Form.js\";\nimport type { FieldRendererConfig } from \"./AdminConfig/FieldRenderer.js\";\nimport { createAdminConfig } from \"./createAdminConfig.js\";\nimport type { EditorTheme } from \"@webiny/lexical-theme\";\nimport { createLexicalTokens } from \"@webiny/lexical-theme/createLexicalEditorTokens.js\";\n\nconst base = createAdminConfig<AdminConfig>();\n\nexport const AdminWithConfig = Object.assign(base.WithConfig, {\n displayName: \"AdminWithConfig\"\n});\n\ninterface AdminConfig {\n menus: MenuConfig[];\n supportMenus: SupportMenuConfig[];\n userMenus: UserMenuConfig[];\n tenant: TenantConfig;\n title: string;\n squareLogo: React.ReactNode;\n horizontalLogo: React.ReactNode;\n widgets: WidgetConfig[];\n permissionRenderers: PermissionRendererConfig[];\n lexicalTheme: EditorTheme;\n dialogs: DialogConfig[];\n fieldRenderers: FieldRendererConfig[];\n}\n\n/* Once the app fully renders (after the LoginScreen), apply protected configs. */\nexport const AdminConfigPlugin = <base.ApplyProtectedConfig />;\n\nexport const AdminConfigProvider = createProvider(Original => {\n return function AdminConfigProvider({ children }) {\n return (\n <AdminWithConfig>\n <base.ApplyPublicConfig />\n <Original>{children}</Original>\n </AdminWithConfig>\n );\n };\n});\n\nconst lexicalTokens = createLexicalTokens(\"wa-lx-\");\n\nexport const useAdminConfig = () => {\n const baseConfig = base.useConfig();\n\n const lexicalTheme: EditorTheme = {\n colors: baseConfig.lexicalTheme?.colors,\n typography: baseConfig.lexicalTheme?.typography || {},\n tokens: lexicalTokens\n };\n\n return {\n menus: baseConfig.menus ?? [],\n userMenus: baseConfig.userMenus ?? [],\n supportMenus: baseConfig.supportMenus ?? [],\n title: baseConfig.title,\n logo: {\n squareLogo: baseConfig.squareLogo,\n horizontalLogo: baseConfig.horizontalLogo\n },\n widgets: baseConfig.widgets ?? [],\n permissionRenderers: baseConfig.permissionRenderers ?? [],\n lexicalTheme,\n dialogs: baseConfig.dialogs ?? [],\n fieldRenderers: baseConfig.fieldRenderers ?? []\n };\n};\n\nexport interface PublicProps {\n children: React.ReactNode;\n}\n\nexport const Public = ({ children }: PublicProps) => {\n return <base.PublicConfig>{children}</base.PublicConfig>;\n};\n\nexport interface PrivateProps {\n children: React.ReactNode;\n}\n\nexport const Private = ({ children }: PrivateProps) => {\n return <base.PrivateConfig>{children}</base.PrivateConfig>;\n};\n\nexport const AdminConfig = Object.assign(Private, {\n Public,\n Theme,\n Menu,\n Route,\n Tenant,\n Title,\n Logo,\n Dashboard,\n Security,\n LexicalTheme,\n Dialog,\n Form,\n useAdminConfig\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,aAAa;AAC5C,SAASC,IAAI;AAEb,SAASC,MAAM;AAGf,SAASC,KAAK;AACd,SAASC,KAAK;AACd,SAASC,SAAS;AAElB,SAASC,QAAQ;AAEjB,SAASC,YAAY;AACrB,SAASC,KAAK;AACd,SAASC,IAAI;AACb,SAASC,MAAM;AAEf,SAASC,IAAI;AAEb,SAASC,iBAAiB;AAE1B,SAASC,mBAAmB,QAAQ,oDAAoD;AAExF,MAAMC,IAAI,GAAGF,iBAAiB,CAAc,CAAC;AAE7C,OAAO,MAAMG,eAAe,GAAGC,MAAM,CAACC,MAAM,CAACH,IAAI,CAACI,UAAU,EAAE;EAC1DC,WAAW,EAAE;AACjB,CAAC,CAAC;AAiBF;AACA,OAAO,MAAMC,iBAAiB,gBAAGrB,KAAA,CAAAsB,aAAA,CAACP,IAAI,CAACQ,oBAAoB,MAAE,CAAC;AAE9D,OAAO,MAAMC,mBAAmB,GAAGvB,cAAc,CAACwB,QAAQ,IAAI;EAC1D,OAAO,SAASD,mBAAmBA,CAAC;IAAEE;EAAS,CAAC,EAAE;IAC9C,oBACI1B,KAAA,CAAAsB,aAAA,CAACN,eAAe,qBACZhB,KAAA,CAAAsB,aAAA,CAACP,IAAI,CAACY,iBAAiB,MAAE,CAAC,eAC1B3B,KAAA,CAAAsB,aAAA,CAACG,QAAQ,QAAEC,QAAmB,CACjB,CAAC;EAE1B,CAAC;AACL,CAAC,CAAC;AAEF,MAAME,aAAa,GAAGd,mBAAmB,CAAC,QAAQ,CAAC;AAEnD,OAAO,MAAMe,cAAc,GAAGA,CAAA,KAAM;EAChC,MAAMC,UAAU,GAAGf,IAAI,CAACgB,SAAS,CAAC,CAAC;EAEnC,MAAMC,YAAyB,GAAG;IAC9BC,MAAM,EAAEH,UAAU,CAACE,YAAY,EAAEC,MAAM;IACvCC,UAAU,EAAEJ,UAAU,CAACE,YAAY,EAAEE,UAAU,IAAI,CAAC,CAAC;IACrDC,MAAM,EAAEP;EACZ,CAAC;EAED,OAAO;IACHQ,KAAK,EAAEN,UAAU,CAACM,KAAK,IAAI,EAAE;IAC7BC,SAAS,EAAEP,UAAU,CAACO,SAAS,IAAI,EAAE;IACrCC,YAAY,EAAER,UAAU,CAACQ,YAAY,IAAI,EAAE;IAC3CC,KAAK,EAAET,UAAU,CAACS,KAAK;IACvBC,IAAI,EAAE;MACFC,UAAU,EAAEX,UAAU,CAACW,UAAU;MACjCC,cAAc,EAAEZ,UAAU,CAACY;IAC/B,CAAC;IACDC,OAAO,EAAEb,UAAU,CAACa,OAAO,IAAI,EAAE;IACjCC,mBAAmB,EAAEd,UAAU,CAACc,mBAAmB,IAAI,EAAE;IACzDZ,YAAY;IACZa,OAAO,EAAEf,UAAU,CAACe,OAAO,IAAI,EAAE;IACjCC,cAAc,EAAEhB,UAAU,CAACgB,cAAc,IAAI;EACjD,CAAC;AACL,CAAC;AAMD,OAAO,MAAMC,MAAM,GAAGA,CAAC;EAAErB;AAAsB,CAAC,KAAK;EACjD,oBAAO1B,KAAA,CAAAsB,aAAA,CAACP,IAAI,CAACiC,YAAY,QAAEtB,QAA4B,CAAC;AAC5D,CAAC;AAMD,OAAO,MAAMuB,OAAO,GAAGA,CAAC;EAAEvB;AAAuB,CAAC,KAAK;EACnD,oBAAO1B,KAAA,CAAAsB,aAAA,CAACP,IAAI,CAACmC,aAAa,QAAExB,QAA6B,CAAC;AAC9D,CAAC;AAED,OAAO,MAAMyB,WAAW,GAAGlC,MAAM,CAACC,MAAM,CAAC+B,OAAO,EAAE;EAC9CF,MAAM;EACN1C,KAAK;EACLH,IAAI;EACJE,KAAK;EACLD,MAAM;EACNM,KAAK;EACLC,IAAI;EACJJ,SAAS;EACTC,QAAQ;EACRC,YAAY;EACZG,MAAM;EACNC,IAAI;EACJiB;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
export { createPermissionSchema } from "../../permissions/index.js";
|
|
2
|
+
export { createPermissionsAbstraction } from "../../permissions/index.js";
|
|
3
|
+
export { createPermissionsFeature } from "../../permissions/index.js";
|
|
4
|
+
export { createHasPermission } from "../../permissions/index.js";
|
|
5
|
+
export { createUsePermissions } from "../../permissions/index.js";
|
|
6
|
+
export type { Permissions } from "../../permissions/types.js";
|
|
1
7
|
export { LogInUseCase } from "../../features/security/LogIn/index.js";
|
|
2
8
|
export { LogOutUseCase } from "../../features/security/LogOut/index.js";
|
|
3
9
|
export { AuthenticationContext } from "../../features/security/AuthenticationContext/index.js";
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export { createPermissionSchema } from "../../permissions/index.js";
|
|
2
|
+
export { createPermissionsAbstraction } from "../../permissions/index.js";
|
|
3
|
+
export { createPermissionsFeature } from "../../permissions/index.js";
|
|
4
|
+
export { createHasPermission } from "../../permissions/index.js";
|
|
5
|
+
export { createUsePermissions } from "../../permissions/index.js";
|
|
1
6
|
export { LogInUseCase } from "../../features/security/LogIn/index.js";
|
|
2
7
|
export { LogOutUseCase } from "../../features/security/LogOut/index.js";
|
|
3
8
|
export { AuthenticationContext } from "../../features/security/AuthenticationContext/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LogInUseCase","LogOutUseCase","AuthenticationContext","IdentityContext","useAuthentication","useIdentity","HasPermissionComponent","LoginScreenComponent"],"sources":["security.ts"],"sourcesContent":["export { LogInUseCase } from \"~/features/security/LogIn/index.js\";\nexport { LogOutUseCase } from \"~/features/security/LogOut/index.js\";\nexport { AuthenticationContext } from \"~/features/security/AuthenticationContext/index.js\";\nexport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nexport { useAuthentication } from \"~/presentation/security/hooks/useAuthentication.js\";\nexport { useIdentity } from \"~/presentation/security/hooks/useIdentity.js\";\nexport { HasPermissionComponent } from \"~/presentation/security/components/HasPermission.js\";\nexport { LoginScreenComponent } from \"~/base/ui/LoginScreen.js\";\n"],"mappings":"AAAA,SAASA,YAAY;AACrB,SAASC,aAAa;AACtB,SAASC,qBAAqB;AAC9B,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createPermissionSchema","createPermissionsAbstraction","createPermissionsFeature","createHasPermission","createUsePermissions","LogInUseCase","LogOutUseCase","AuthenticationContext","IdentityContext","useAuthentication","useIdentity","HasPermissionComponent","LoginScreenComponent"],"sources":["security.ts"],"sourcesContent":["export { createPermissionSchema } from \"~/permissions/index.js\";\nexport { createPermissionsAbstraction } from \"~/permissions/index.js\";\nexport { createPermissionsFeature } from \"~/permissions/index.js\";\nexport { createHasPermission } from \"~/permissions/index.js\";\nexport { createUsePermissions } from \"~/permissions/index.js\";\nexport type { Permissions } from \"~/permissions/types.js\";\nexport { LogInUseCase } from \"~/features/security/LogIn/index.js\";\nexport { LogOutUseCase } from \"~/features/security/LogOut/index.js\";\nexport { AuthenticationContext } from \"~/features/security/AuthenticationContext/index.js\";\nexport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nexport { useAuthentication } from \"~/presentation/security/hooks/useAuthentication.js\";\nexport { useIdentity } from \"~/presentation/security/hooks/useIdentity.js\";\nexport { HasPermissionComponent } from \"~/presentation/security/components/HasPermission.js\";\nexport { LoginScreenComponent } from \"~/base/ui/LoginScreen.js\";\n"],"mappings":"AAAA,SAASA,sBAAsB;AAC/B,SAASC,4BAA4B;AACrC,SAASC,wBAAwB;AACjC,SAASC,mBAAmB;AAC5B,SAASC,oBAAoB;AAE7B,SAASC,YAAY;AACrB,SAASC,aAAa;AACtB,SAASC,qBAAqB;AAC9B,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB","ignoreList":[]}
|
package/exports/admin/ui.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { useDialog } from "../../hooks/index.js";
|
|
2
|
+
export { useOpenDialog } from "../../hooks/index.js";
|
|
1
3
|
export { useHotkeys } from "../../hooks/useHotkeys.js";
|
|
2
4
|
export { useDialogs } from "../../components/Dialogs/useDialogs.js";
|
|
3
5
|
export { Logo } from "../../base/ui/Logo.js";
|
package/exports/admin/ui.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { useDialog } from "../../hooks/index.js";
|
|
2
|
+
export { useOpenDialog } from "../../hooks/index.js";
|
|
1
3
|
export { useHotkeys } from "../../hooks/useHotkeys.js";
|
|
2
4
|
export { useDialogs } from "../../components/Dialogs/useDialogs.js";
|
|
3
5
|
export { Logo } from "../../base/ui/Logo.js";
|
package/exports/admin/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useHotkeys","useDialogs","Logo","TenantSelector","LexicalEditor"],"sources":["ui.ts"],"sourcesContent":["export { useHotkeys } from \"~/hooks/useHotkeys.js\";\nexport { useDialogs } from \"~/components/Dialogs/useDialogs.js\";\nexport { Logo } from \"~/base/ui/Logo.js\";\nexport { TenantSelector } from \"~/base/ui/TenantSelector.js\";\nexport { LexicalEditor } from \"~/components/LexicalEditor/LexicalEditor.js\";\n"],"mappings":"AAAA,SAASA,UAAU;AACnB,SAASC,UAAU;AACnB,SAASC,IAAI;AACb,SAASC,cAAc;AACvB,SAASC,aAAa","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useDialog","useOpenDialog","useHotkeys","useDialogs","Logo","TenantSelector","LexicalEditor"],"sources":["ui.ts"],"sourcesContent":["export { useDialog } from \"~/hooks/index.js\";\nexport { useOpenDialog } from \"~/hooks/index.js\";\nexport { useHotkeys } from \"~/hooks/useHotkeys.js\";\nexport { useDialogs } from \"~/components/Dialogs/useDialogs.js\";\nexport { Logo } from \"~/base/ui/Logo.js\";\nexport { TenantSelector } from \"~/base/ui/TenantSelector.js\";\nexport { LexicalEditor } from \"~/components/LexicalEditor/LexicalEditor.js\";\n"],"mappings":"AAAA,SAASA,SAAS;AAClB,SAASC,aAAa;AACtB,SAASC,UAAU;AACnB,SAASC,UAAU;AACnB,SAASC,IAAI;AACb,SAASC,cAAc;AACvB,SAASC,aAAa","ignoreList":[]}
|
package/exports/admin.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export { DevToolsSection } from "../components/index.js";
|
|
2
|
-
export { createPermissionSchema } from "../permissions/index.js";
|
|
3
|
-
export { createHasPermission } from "../permissions/index.js";
|
|
4
|
-
export { createUsePermissions } from "../permissions/index.js";
|
|
5
2
|
export { RegisterFeature } from "../components/RegisterFeature.js";
|
|
6
3
|
export { BuildParam, BuildParams } from "../features/buildParams/index.js";
|
|
7
4
|
export { AdminConfig } from "../config/AdminConfig.js";
|
package/exports/admin.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export { DevToolsSection } from "../components/index.js";
|
|
2
|
-
export { createPermissionSchema } from "../permissions/index.js";
|
|
3
|
-
export { createHasPermission } from "../permissions/index.js";
|
|
4
|
-
export { createUsePermissions } from "../permissions/index.js";
|
|
5
2
|
export { RegisterFeature } from "../components/RegisterFeature.js";
|
|
6
3
|
export { BuildParam, BuildParams } from "../features/buildParams/index.js";
|
|
7
4
|
export { AdminConfig } from "../config/AdminConfig.js";
|
package/exports/admin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DevToolsSection","
|
|
1
|
+
{"version":3,"names":["DevToolsSection","RegisterFeature","BuildParam","BuildParams","AdminConfig","Routes"],"sources":["admin.ts"],"sourcesContent":["export { DevToolsSection } from \"~/components/index.js\";\nexport { RegisterFeature } from \"~/components/RegisterFeature.js\";\nexport { BuildParam, BuildParams } from \"~/features/buildParams/index.js\";\nexport { AdminConfig } from \"~/config/AdminConfig.js\";\nexport { Routes } from \"~/routes.js\";\n"],"mappings":"AAAA,SAASA,eAAe;AACxB,SAASC,eAAe;AACxB,SAASC,UAAU,EAAEC,WAAW;AAChC,SAASC,WAAW;AACpB,SAASC,MAAM","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { IFieldConfig, IFieldVM, IFieldValidation, IFormModel, IField, FieldTypeMap, BeforeChangeCallback, AfterChangeCallback, AfterSetValueCallback, OnBlurCallback } from "./abstractions.js";
|
|
2
|
+
/**
|
|
3
|
+
* Runtime observable field. Holds value, validation state, and exposes a VM for renderers.
|
|
4
|
+
*/
|
|
5
|
+
export declare class Field implements IField {
|
|
6
|
+
private _value;
|
|
7
|
+
private _validation;
|
|
8
|
+
private _disabled;
|
|
9
|
+
private _hidden;
|
|
10
|
+
private _beforeChangeCallbacks;
|
|
11
|
+
private _afterChangeCallbacks;
|
|
12
|
+
private _afterSetValueCallbacks;
|
|
13
|
+
private _onBlurCallbacks;
|
|
14
|
+
private _isUIChange;
|
|
15
|
+
private _form;
|
|
16
|
+
readonly config: IFieldConfig;
|
|
17
|
+
constructor(config: IFieldConfig);
|
|
18
|
+
get name(): string;
|
|
19
|
+
get type(): string;
|
|
20
|
+
getValue<T = unknown>(): T;
|
|
21
|
+
/**
|
|
22
|
+
* Set value with beforeChange/afterChange pipeline.
|
|
23
|
+
* beforeChange always runs (pure transform).
|
|
24
|
+
* afterChange only fires when value actually changed.
|
|
25
|
+
*/
|
|
26
|
+
setValue(raw: unknown): void;
|
|
27
|
+
/**
|
|
28
|
+
* Set value directly without running pipelines. Used by setData().
|
|
29
|
+
*/
|
|
30
|
+
setValueSilent(value: unknown): void;
|
|
31
|
+
setDisabled(value: boolean): void;
|
|
32
|
+
get visible(): boolean;
|
|
33
|
+
setVisible(value: boolean): void;
|
|
34
|
+
setValidation(validation: IFieldValidation): void;
|
|
35
|
+
resetValidation(): void;
|
|
36
|
+
addBeforeChange(cb: BeforeChangeCallback): void;
|
|
37
|
+
addAfterChange(cb: AfterChangeCallback): void;
|
|
38
|
+
addAfterSetValue(cb: AfterSetValueCallback): void;
|
|
39
|
+
addOnBlur(cb: OnBlurCallback): void;
|
|
40
|
+
blur(): void;
|
|
41
|
+
setForm(form: IFormModel): void;
|
|
42
|
+
as<T extends keyof FieldTypeMap>(type: T): FieldTypeMap[T];
|
|
43
|
+
remove(): void;
|
|
44
|
+
get vm(): IFieldVM;
|
|
45
|
+
private _setValueFromUI;
|
|
46
|
+
private _resolveOptions;
|
|
47
|
+
/**
|
|
48
|
+
* Validate this field. Returns true if valid.
|
|
49
|
+
* Validation order: required check → zod schema.
|
|
50
|
+
*/
|
|
51
|
+
validate(): Promise<boolean>;
|
|
52
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { makeAutoObservable, computed, runInAction } from "mobx";
|
|
2
|
+
/**
|
|
3
|
+
* Runtime observable field. Holds value, validation state, and exposes a VM for renderers.
|
|
4
|
+
*/
|
|
5
|
+
export class Field {
|
|
6
|
+
_validation = {
|
|
7
|
+
isValid: null
|
|
8
|
+
};
|
|
9
|
+
_beforeChangeCallbacks = [];
|
|
10
|
+
_afterChangeCallbacks = [];
|
|
11
|
+
_afterSetValueCallbacks = [];
|
|
12
|
+
_onBlurCallbacks = [];
|
|
13
|
+
_isUIChange = false;
|
|
14
|
+
_form = null;
|
|
15
|
+
constructor(config) {
|
|
16
|
+
this.config = config;
|
|
17
|
+
this._value = config.defaultValue ?? null;
|
|
18
|
+
this._disabled = config.disabled;
|
|
19
|
+
this._hidden = config.hidden;
|
|
20
|
+
if (config.beforeChangeCallbacks) {
|
|
21
|
+
this._beforeChangeCallbacks = [...config.beforeChangeCallbacks];
|
|
22
|
+
}
|
|
23
|
+
if (config.afterChangeCallbacks) {
|
|
24
|
+
this._afterChangeCallbacks = [...config.afterChangeCallbacks];
|
|
25
|
+
}
|
|
26
|
+
if (config.afterSetValueCallbacks) {
|
|
27
|
+
this._afterSetValueCallbacks = [...config.afterSetValueCallbacks];
|
|
28
|
+
}
|
|
29
|
+
if (config.onBlurCallbacks) {
|
|
30
|
+
this._onBlurCallbacks = [...config.onBlurCallbacks];
|
|
31
|
+
}
|
|
32
|
+
makeAutoObservable(this, {
|
|
33
|
+
config: false,
|
|
34
|
+
vm: computed
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
get name() {
|
|
38
|
+
return this.config.name;
|
|
39
|
+
}
|
|
40
|
+
get type() {
|
|
41
|
+
return this.config.type;
|
|
42
|
+
}
|
|
43
|
+
getValue() {
|
|
44
|
+
return this._value;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Set value with beforeChange/afterChange pipeline.
|
|
49
|
+
* beforeChange always runs (pure transform).
|
|
50
|
+
* afterChange only fires when value actually changed.
|
|
51
|
+
*/
|
|
52
|
+
setValue(raw) {
|
|
53
|
+
let transformed = raw;
|
|
54
|
+
for (const cb of this._beforeChangeCallbacks) {
|
|
55
|
+
transformed = cb(transformed, this._form);
|
|
56
|
+
}
|
|
57
|
+
if (transformed === this._value) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this._value = transformed;
|
|
61
|
+
for (const cb of this._afterChangeCallbacks) {
|
|
62
|
+
cb(transformed, this._form);
|
|
63
|
+
}
|
|
64
|
+
if (!this._isUIChange) {
|
|
65
|
+
for (const cb of this._afterSetValueCallbacks) {
|
|
66
|
+
cb(transformed, this._form);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Set value directly without running pipelines. Used by setData().
|
|
73
|
+
*/
|
|
74
|
+
setValueSilent(value) {
|
|
75
|
+
this._value = value;
|
|
76
|
+
}
|
|
77
|
+
setDisabled(value) {
|
|
78
|
+
this._disabled = value;
|
|
79
|
+
}
|
|
80
|
+
get visible() {
|
|
81
|
+
return !this._hidden;
|
|
82
|
+
}
|
|
83
|
+
setVisible(value) {
|
|
84
|
+
this._hidden = !value;
|
|
85
|
+
}
|
|
86
|
+
setValidation(validation) {
|
|
87
|
+
this._validation = validation;
|
|
88
|
+
}
|
|
89
|
+
resetValidation() {
|
|
90
|
+
this._validation = {
|
|
91
|
+
isValid: null
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
addBeforeChange(cb) {
|
|
95
|
+
this._beforeChangeCallbacks.push(cb);
|
|
96
|
+
}
|
|
97
|
+
addAfterChange(cb) {
|
|
98
|
+
this._afterChangeCallbacks.push(cb);
|
|
99
|
+
}
|
|
100
|
+
addAfterSetValue(cb) {
|
|
101
|
+
this._afterSetValueCallbacks.push(cb);
|
|
102
|
+
}
|
|
103
|
+
addOnBlur(cb) {
|
|
104
|
+
this._onBlurCallbacks.push(cb);
|
|
105
|
+
}
|
|
106
|
+
blur() {
|
|
107
|
+
for (const cb of this._onBlurCallbacks) {
|
|
108
|
+
cb(this._value, this._form);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
setForm(form) {
|
|
112
|
+
this._form = form;
|
|
113
|
+
}
|
|
114
|
+
as(type) {
|
|
115
|
+
if (this.config.type !== type) {
|
|
116
|
+
throw new Error(`Field "${this.config.name}" is type "${this.config.type}", not "${type}".`);
|
|
117
|
+
}
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
remove() {
|
|
121
|
+
if (!this._form) {
|
|
122
|
+
throw new Error(`Field "${this.config.name}" is not attached to a form.`);
|
|
123
|
+
}
|
|
124
|
+
this._form.removeField(this.config.name);
|
|
125
|
+
}
|
|
126
|
+
get vm() {
|
|
127
|
+
const options = this._resolveOptions();
|
|
128
|
+
return {
|
|
129
|
+
name: this.config.name,
|
|
130
|
+
type: this.config.type,
|
|
131
|
+
label: this.config.label,
|
|
132
|
+
placeholder: this.config.placeholder,
|
|
133
|
+
value: this._value,
|
|
134
|
+
validation: this._validation,
|
|
135
|
+
required: this.config.required,
|
|
136
|
+
disabled: this._disabled,
|
|
137
|
+
renderer: this.config.renderer,
|
|
138
|
+
options,
|
|
139
|
+
onChange: value => this._setValueFromUI(value),
|
|
140
|
+
onBlur: () => this.blur()
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
_setValueFromUI(value) {
|
|
144
|
+
this._isUIChange = true;
|
|
145
|
+
try {
|
|
146
|
+
this.setValue(value);
|
|
147
|
+
} finally {
|
|
148
|
+
this._isUIChange = false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
_resolveOptions() {
|
|
152
|
+
if (!this.config.options) {
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
if (typeof this.config.options === "function") {
|
|
156
|
+
return this.config.options(this._form);
|
|
157
|
+
}
|
|
158
|
+
return this.config.options;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Validate this field. Returns true if valid.
|
|
163
|
+
* Validation order: required check → zod schema.
|
|
164
|
+
*/
|
|
165
|
+
async validate() {
|
|
166
|
+
// Required check
|
|
167
|
+
if (this.config.required) {
|
|
168
|
+
const value = this._value;
|
|
169
|
+
if (value === null || value === undefined || value === "") {
|
|
170
|
+
this._validation = {
|
|
171
|
+
isValid: false,
|
|
172
|
+
message: this.config.requiredMessage || "This field is required."
|
|
173
|
+
};
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Zod schema check
|
|
179
|
+
if (this.config.schema) {
|
|
180
|
+
const result = await this.config.schema.safeParseAsync(this._value);
|
|
181
|
+
if (!result.success) {
|
|
182
|
+
const firstIssue = result.error.issues[0];
|
|
183
|
+
runInAction(() => {
|
|
184
|
+
this._validation = {
|
|
185
|
+
isValid: false,
|
|
186
|
+
message: firstIssue?.message || "Invalid value."
|
|
187
|
+
};
|
|
188
|
+
});
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
runInAction(() => {
|
|
193
|
+
this._validation = {
|
|
194
|
+
isValid: true
|
|
195
|
+
};
|
|
196
|
+
});
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
//# sourceMappingURL=Field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["makeAutoObservable","computed","runInAction","Field","_validation","isValid","_beforeChangeCallbacks","_afterChangeCallbacks","_afterSetValueCallbacks","_onBlurCallbacks","_isUIChange","_form","constructor","config","_value","defaultValue","_disabled","disabled","_hidden","hidden","beforeChangeCallbacks","afterChangeCallbacks","afterSetValueCallbacks","onBlurCallbacks","vm","name","type","getValue","setValue","raw","transformed","cb","setValueSilent","value","setDisabled","visible","setVisible","setValidation","validation","resetValidation","addBeforeChange","push","addAfterChange","addAfterSetValue","addOnBlur","blur","setForm","form","as","Error","remove","removeField","options","_resolveOptions","label","placeholder","required","renderer","onChange","_setValueFromUI","onBlur","undefined","validate","message","requiredMessage","schema","result","safeParseAsync","success","firstIssue","error","issues"],"sources":["Field.ts"],"sourcesContent":["import { makeAutoObservable, computed, runInAction } from \"mobx\";\nimport type {\n IFieldConfig,\n IFieldVM,\n IFieldValidation,\n IValueOption,\n IFormModel,\n IField,\n FieldTypeMap,\n BeforeChangeCallback,\n AfterChangeCallback,\n AfterSetValueCallback,\n OnBlurCallback\n} from \"./abstractions.js\";\n\n/**\n * Runtime observable field. Holds value, validation state, and exposes a VM for renderers.\n */\nexport class Field implements IField {\n private _value: unknown;\n private _validation: IFieldValidation = { isValid: null };\n private _disabled: boolean;\n private _hidden: boolean;\n private _beforeChangeCallbacks: BeforeChangeCallback[] = [];\n private _afterChangeCallbacks: AfterChangeCallback[] = [];\n private _afterSetValueCallbacks: AfterSetValueCallback[] = [];\n private _onBlurCallbacks: OnBlurCallback[] = [];\n private _isUIChange = false;\n private _form: IFormModel | null = null;\n\n readonly config: IFieldConfig;\n\n constructor(config: IFieldConfig) {\n this.config = config;\n this._value = config.defaultValue ?? null;\n this._disabled = config.disabled;\n this._hidden = config.hidden;\n\n if (config.beforeChangeCallbacks) {\n this._beforeChangeCallbacks = [...config.beforeChangeCallbacks];\n }\n if (config.afterChangeCallbacks) {\n this._afterChangeCallbacks = [...config.afterChangeCallbacks];\n }\n if (config.afterSetValueCallbacks) {\n this._afterSetValueCallbacks = [...config.afterSetValueCallbacks];\n }\n if (config.onBlurCallbacks) {\n this._onBlurCallbacks = [...config.onBlurCallbacks];\n }\n\n makeAutoObservable(this, {\n config: false,\n vm: computed\n });\n }\n\n get name(): string {\n return this.config.name;\n }\n\n get type(): string {\n return this.config.type;\n }\n\n getValue<T = unknown>(): T {\n return this._value as T;\n }\n\n /**\n * Set value with beforeChange/afterChange pipeline.\n * beforeChange always runs (pure transform).\n * afterChange only fires when value actually changed.\n */\n setValue(raw: unknown): void {\n let transformed = raw;\n for (const cb of this._beforeChangeCallbacks) {\n transformed = cb(transformed, this._form!);\n }\n\n if (transformed === this._value) {\n return;\n }\n\n this._value = transformed;\n\n for (const cb of this._afterChangeCallbacks) {\n cb(transformed, this._form!);\n }\n\n if (!this._isUIChange) {\n for (const cb of this._afterSetValueCallbacks) {\n cb(transformed, this._form!);\n }\n }\n }\n\n /**\n * Set value directly without running pipelines. Used by setData().\n */\n setValueSilent(value: unknown): void {\n this._value = value;\n }\n\n setDisabled(value: boolean): void {\n this._disabled = value;\n }\n\n get visible(): boolean {\n return !this._hidden;\n }\n\n setVisible(value: boolean): void {\n this._hidden = !value;\n }\n\n setValidation(validation: IFieldValidation): void {\n this._validation = validation;\n }\n\n resetValidation(): void {\n this._validation = { isValid: null };\n }\n\n addBeforeChange(cb: BeforeChangeCallback): void {\n this._beforeChangeCallbacks.push(cb);\n }\n\n addAfterChange(cb: AfterChangeCallback): void {\n this._afterChangeCallbacks.push(cb);\n }\n\n addAfterSetValue(cb: AfterSetValueCallback): void {\n this._afterSetValueCallbacks.push(cb);\n }\n\n addOnBlur(cb: OnBlurCallback): void {\n this._onBlurCallbacks.push(cb);\n }\n\n blur(): void {\n for (const cb of this._onBlurCallbacks) {\n cb(this._value, this._form!);\n }\n }\n\n setForm(form: IFormModel): void {\n this._form = form;\n }\n\n as<T extends keyof FieldTypeMap>(type: T): FieldTypeMap[T] {\n if (this.config.type !== type) {\n throw new Error(\n `Field \"${this.config.name}\" is type \"${this.config.type}\", not \"${type}\".`\n );\n }\n return this as unknown as FieldTypeMap[T];\n }\n\n remove(): void {\n if (!this._form) {\n throw new Error(`Field \"${this.config.name}\" is not attached to a form.`);\n }\n (this._form as any).removeField(this.config.name);\n }\n\n get vm(): IFieldVM {\n const options = this._resolveOptions();\n\n return {\n name: this.config.name,\n type: this.config.type,\n label: this.config.label,\n placeholder: this.config.placeholder,\n value: this._value,\n validation: this._validation,\n required: this.config.required,\n disabled: this._disabled,\n renderer: this.config.renderer,\n options,\n onChange: (value: unknown) => this._setValueFromUI(value),\n onBlur: () => this.blur()\n };\n }\n\n private _setValueFromUI(value: unknown): void {\n this._isUIChange = true;\n try {\n this.setValue(value);\n } finally {\n this._isUIChange = false;\n }\n }\n\n private _resolveOptions(): IValueOption[] | undefined {\n if (!this.config.options) {\n return undefined;\n }\n if (typeof this.config.options === \"function\") {\n return this.config.options(this._form!);\n }\n return this.config.options;\n }\n\n /**\n * Validate this field. Returns true if valid.\n * Validation order: required check → zod schema.\n */\n async validate(): Promise<boolean> {\n // Required check\n if (this.config.required) {\n const value = this._value;\n if (value === null || value === undefined || value === \"\") {\n this._validation = {\n isValid: false,\n message: this.config.requiredMessage || \"This field is required.\"\n };\n return false;\n }\n }\n\n // Zod schema check\n if (this.config.schema) {\n const result = await this.config.schema.safeParseAsync(this._value);\n if (!result.success) {\n const firstIssue = result.error.issues[0];\n runInAction(() => {\n this._validation = {\n isValid: false,\n message: firstIssue?.message || \"Invalid value.\"\n };\n });\n return false;\n }\n }\n\n runInAction(() => {\n this._validation = { isValid: true };\n });\n return true;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { IFieldConfig, IValueOption, IFormModel, IFieldBuilder, ISelectFieldBuilder, IFieldBuilderRegistry, BeforeChangeCallback, AfterChangeCallback, AfterSetValueCallback, OnBlurCallback } from "./abstractions.js";
|
|
3
|
+
/**
|
|
4
|
+
* Base FieldBuilder with fluent API.
|
|
5
|
+
* Each method mutates `this` and returns `this` for chaining.
|
|
6
|
+
*/
|
|
7
|
+
export declare class FieldBuilder<TType extends string = string> implements IFieldBuilder {
|
|
8
|
+
protected _config: IFieldConfig;
|
|
9
|
+
constructor(type: TType);
|
|
10
|
+
get fieldType(): string;
|
|
11
|
+
label(text: string): this;
|
|
12
|
+
placeholder(text: string): this;
|
|
13
|
+
schema(zodSchema: z.ZodTypeAny): this;
|
|
14
|
+
defaultValue(value: unknown): this;
|
|
15
|
+
renderer(name: string): this;
|
|
16
|
+
hidden(): this;
|
|
17
|
+
required(message?: string): this;
|
|
18
|
+
disabled(value?: boolean): this;
|
|
19
|
+
beforeChange(fn: BeforeChangeCallback): this;
|
|
20
|
+
afterChange(fn: AfterChangeCallback): this;
|
|
21
|
+
afterSetValue(fn: AfterSetValueCallback): this;
|
|
22
|
+
onBlur(fn: OnBlurCallback): this;
|
|
23
|
+
build(name: string): IFieldConfig;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Text field builder.
|
|
27
|
+
*/
|
|
28
|
+
export declare class TextFieldBuilder extends FieldBuilder<"text"> {
|
|
29
|
+
constructor();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Select field builder with .options() support.
|
|
33
|
+
*/
|
|
34
|
+
export declare class SelectFieldBuilder extends FieldBuilder<"select"> implements ISelectFieldBuilder {
|
|
35
|
+
constructor();
|
|
36
|
+
options(opts: IValueOption[] | ((form: IFormModel) => IValueOption[])): this;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Factory interface for creating field builders.
|
|
40
|
+
*/
|
|
41
|
+
export interface IFieldTypeFactory {
|
|
42
|
+
readonly type: string;
|
|
43
|
+
create(): FieldBuilder;
|
|
44
|
+
}
|
|
45
|
+
export declare function createFieldBuilderRegistry(factories?: IFieldTypeFactory[]): IFieldBuilderRegistry;
|