@solidstarters/solid-core-ui 1.1.21 → 1.1.23
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/components/common/SolidBreadcrumb.d.ts +2 -10
- package/dist/components/common/SolidBreadcrumb.d.ts.map +1 -1
- package/dist/components/common/SolidBreadcrumb.js +28 -8
- package/dist/components/common/SolidBreadcrumb.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +1 -0
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidViewLayoutManager.d.ts +13 -0
- package/dist/components/core/common/SolidViewLayoutManager.d.ts.map +1 -0
- package/dist/components/core/common/SolidViewLayoutManager.js +90 -0
- package/dist/components/core/common/SolidViewLayoutManager.js.map +1 -0
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js +6 -4
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js +5 -3
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
- package/dist/components/core/form/SolidFormLayouts.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormLayouts.js +6 -2
- package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +157 -44
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/fields/ISolidField.d.ts +2 -0
- package/dist/components/core/form/fields/ISolidField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.js +3 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.js +4 -1
- package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +0 -2
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +2 -2
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/list/SolidListView.js +1 -1
- package/dist/components/core/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +3 -9
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.d.ts +1 -1
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +2 -2
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -1
- package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js +17 -9
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.js +5 -5
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/module/CreateModule.d.ts.map +1 -1
- package/dist/components/core/module/CreateModule.js +1 -5
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +1 -5
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +21 -34
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/helpers/AppTitle.d.ts.map +1 -1
- package/dist/helpers/AppTitle.js.map +1 -1
- package/dist/helpers/registry.d.ts +6 -0
- package/dist/helpers/registry.d.ts.map +1 -0
- package/dist/helpers/registry.js +37 -0
- package/dist/helpers/registry.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/common/SolidBreadcrumb.tsx +38 -14
- package/src/components/core/common/SolidGlobalSearchElement.tsx +2 -0
- package/src/components/core/common/SolidViewLayoutManager.ts +85 -0
- package/src/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +11 -1
- package/src/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +16 -7
- package/src/components/core/form/SolidFormLayouts.tsx +6 -3
- package/src/components/core/form/SolidFormView.tsx +180 -38
- package/src/components/core/form/fields/ISolidField.tsx +3 -1
- package/src/components/core/form/fields/SolidSelectionStaticField.tsx +2 -1
- package/src/components/core/form/fields/SolidShortTextField.tsx +4 -2
- package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +0 -2
- package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +6 -6
- package/src/components/core/list/SolidListView.tsx +1 -1
- package/src/components/core/model/CreateModel.tsx +8 -12
- package/src/components/core/model/FieldMetaData.tsx +2 -2
- package/src/components/core/model/FieldMetaDataForm.tsx +338 -332
- package/src/components/core/model/ModelMetaData.tsx +5 -5
- package/src/components/core/module/CreateModule.tsx +1 -6
- package/src/components/core/users/CreateUser.tsx +1 -6
- package/src/components/layout/AppSidebar.tsx +3 -21
- package/src/helpers/AppTitle.tsx +0 -2
- package/src/helpers/registry.ts +52 -0
- package/src/index.ts +16 -1
- package/src/types/index.d.ts +26 -1
- package/src/types/solid-core.d.ts +90 -0
|
@@ -256,11 +256,11 @@ const ModelMetaData = React.forwardRef(({ modelMetaData, setModelMetaData, allMo
|
|
|
256
256
|
|
|
257
257
|
}, [formik.values])
|
|
258
258
|
|
|
259
|
-
useEffect(() => {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
}, [formik.dirty]);
|
|
259
|
+
// useEffect(() => {
|
|
260
|
+
// if (formik.dirty) {
|
|
261
|
+
// setIsDirty(true);
|
|
262
|
+
// }
|
|
263
|
+
// }, [formik.dirty]);
|
|
264
264
|
|
|
265
265
|
return (
|
|
266
266
|
|
|
@@ -375,11 +375,6 @@ const CreateModule = ({ data }: any) => {
|
|
|
375
375
|
)
|
|
376
376
|
}
|
|
377
377
|
|
|
378
|
-
const breadcrumbData = [
|
|
379
|
-
{ label: 'Module', link: '/admin/core/solid-core/model-metadata/list' },
|
|
380
|
-
{ label: pathname.includes('new') ? 'Create Module' : 'Edit Module' },
|
|
381
|
-
];
|
|
382
|
-
|
|
383
378
|
return (
|
|
384
379
|
<div className="solid-form-wrapper">
|
|
385
380
|
<Toast ref={toast} />
|
|
@@ -418,7 +413,7 @@ const CreateModule = ({ data }: any) => {
|
|
|
418
413
|
</>
|
|
419
414
|
}
|
|
420
415
|
</div>
|
|
421
|
-
<SolidBreadcrumb
|
|
416
|
+
<SolidBreadcrumb />
|
|
422
417
|
{/* <div className="solid-form-stepper">
|
|
423
418
|
<SolidFormStepper />
|
|
424
419
|
</div> */}
|
|
@@ -231,11 +231,6 @@ const CreateUser = ({ data, params }: any) => {
|
|
|
231
231
|
}
|
|
232
232
|
}, [isSuccess, isDeleteUserSuceess, isUpdateuserSuceess])
|
|
233
233
|
|
|
234
|
-
const breadcrumbData = [
|
|
235
|
-
{ label: 'User', link: '/admin/core/solid-core/model-metadata/list' },
|
|
236
|
-
{ label: params.id === "new" ? 'Create User' : 'Edit User' },
|
|
237
|
-
];
|
|
238
|
-
|
|
239
234
|
return (
|
|
240
235
|
<div className="solid-form-wrapper">
|
|
241
236
|
<Toast ref={toast} />
|
|
@@ -274,7 +269,7 @@ const CreateUser = ({ data, params }: any) => {
|
|
|
274
269
|
</>
|
|
275
270
|
)}
|
|
276
271
|
</div>
|
|
277
|
-
<SolidBreadcrumb
|
|
272
|
+
<SolidBreadcrumb />
|
|
278
273
|
{/* <div className="solid-form-stepper">
|
|
279
274
|
<SolidFormStepper />
|
|
280
275
|
</div> */}
|
|
@@ -10,6 +10,7 @@ import UserProfileMenu from "./user-profile-menu";
|
|
|
10
10
|
import Image from "next/image";
|
|
11
11
|
import AppBuilderSvg from '../../resources/images/menu/app-builder.svg'
|
|
12
12
|
import SettingImage from '../../resources/images/Navigation/settings.png'
|
|
13
|
+
import { Avatar } from "primereact/avatar";
|
|
13
14
|
|
|
14
15
|
// import menu from "@/helpers/menu";
|
|
15
16
|
|
|
@@ -169,26 +170,7 @@ const AppSidebar = () => {
|
|
|
169
170
|
// src={`/images/menu/app-builder.svg`}
|
|
170
171
|
// alt={m.title}
|
|
171
172
|
// />
|
|
172
|
-
((
|
|
173
|
-
<div
|
|
174
|
-
style={{
|
|
175
|
-
width: "40px",
|
|
176
|
-
height: "40px",
|
|
177
|
-
display: "flex",
|
|
178
|
-
alignItems: "center",
|
|
179
|
-
justifyContent: "center",
|
|
180
|
-
backgroundColor: "#722ED1",
|
|
181
|
-
color: "white",
|
|
182
|
-
fontWeight: "bold",
|
|
183
|
-
borderRadius: "50%",
|
|
184
|
-
fontSize: "18px",
|
|
185
|
-
textTransform: "uppercase",
|
|
186
|
-
cursor: "pointer",
|
|
187
|
-
}}
|
|
188
|
-
>
|
|
189
|
-
{m.title.charAt(0)}
|
|
190
|
-
</div>
|
|
191
|
-
))
|
|
173
|
+
<Avatar label={m.title.charAt(0)}shape="circle" style={{backgroundColor:'var(--primary-color)'}}/>
|
|
192
174
|
}
|
|
193
175
|
</a>
|
|
194
176
|
</div>
|
|
@@ -196,7 +178,7 @@ const AppSidebar = () => {
|
|
|
196
178
|
})}
|
|
197
179
|
</div>
|
|
198
180
|
|
|
199
|
-
<UserProfileMenu></UserProfileMenu>
|
|
181
|
+
{/* <UserProfileMenu></UserProfileMenu> */}
|
|
200
182
|
</div>
|
|
201
183
|
{currentMenu && (
|
|
202
184
|
<div className={`sidebar-right ${visibleNavbar ? "open" : ""}`}>
|
package/src/helpers/AppTitle.tsx
CHANGED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
type ExtensionRegistry = {
|
|
4
|
+
components: Record<string, React.ComponentType<any>>;
|
|
5
|
+
functions: Record<string, (...args: any[]) => any>;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const extensionRegistry: ExtensionRegistry = {
|
|
9
|
+
components: {},
|
|
10
|
+
functions: {},
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const registerExtensionComponent = (name: string, component: React.ComponentType<any>) => {
|
|
14
|
+
// console.log(`registerExtensionComponent invoked... ${name}`);
|
|
15
|
+
extensionRegistry.components[name] = component;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const registerExtensionFunction = (name: string, fn: (...args: any[]) => any) => {
|
|
19
|
+
// console.log(`registerExtensionFunction invoked... ${name}`);
|
|
20
|
+
extensionRegistry.functions[name] = fn;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const getExtensionComponent = (name: string): React.ComponentType<any> | null => {
|
|
24
|
+
if (extensionRegistry.components[name]) {
|
|
25
|
+
return extensionRegistry.components[name];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return null;
|
|
29
|
+
|
|
30
|
+
// const extensionsPath = process.env.NEXT_PUBLIC_SOLID_EXTENSIONS_PATH || "";
|
|
31
|
+
|
|
32
|
+
// // Ensure the environment variable is set
|
|
33
|
+
// if (!extensionsPath) {
|
|
34
|
+
// console.warn(`No overrides path found. Using default components.`);
|
|
35
|
+
// return () => React.createElement("div", { className: "error-message" }, "Loading dynamic component failed (extensions path not found)");
|
|
36
|
+
// }
|
|
37
|
+
|
|
38
|
+
// try {
|
|
39
|
+
// // return dynamic(() => import(`@solid-extensions/${name}`).then((mod) => mod.default));
|
|
40
|
+
// return dynamic(() => import(`${extensionsPath}/${name}`).then((mod) => mod.default));
|
|
41
|
+
// } catch (error) {
|
|
42
|
+
// console.warn(`Component ${name} not found, returning fallback.`);
|
|
43
|
+
// }
|
|
44
|
+
|
|
45
|
+
// // Return an empty component
|
|
46
|
+
// return () => React.createElement("div", { className: "error-message" }, "Loading dynamic component failed (component not found)");
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export const getExtensionFunction = (name: string) => {
|
|
50
|
+
// console.log(`Registry state: `, extensionRegistry);
|
|
51
|
+
return extensionRegistry.functions[name];
|
|
52
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -219,6 +219,7 @@ export { NotFound } from '@/components/common/NotFound'
|
|
|
219
219
|
import Error from '@/components/common/error';
|
|
220
220
|
export { Error };
|
|
221
221
|
export { SolidFormStepper } from '@/components/common/SolidFormStepper'
|
|
222
|
+
export { SolidViewLayoutManager } from '@/components/core/common/SolidViewLayoutManager';
|
|
222
223
|
|
|
223
224
|
// export { SolidListViewOptions } from '@/components/core/common/SolidListViewOptions';
|
|
224
225
|
export { SolidConfigureLayoutElement } from '@/components/core/common/SolidConfigureLayoutElement';
|
|
@@ -375,6 +376,7 @@ export { addCommasToAmount, calculateDaysOfStay, getSingularAndPlural } from '@/
|
|
|
375
376
|
// export * from '@/helpers/menu';
|
|
376
377
|
export { createPermission, deletePermission, updatePermission } from '@/helpers/permissions';
|
|
377
378
|
export { revalidateTag } from '@/helpers/revalidate';
|
|
379
|
+
export { registerExtensionComponent, registerExtensionFunction } from '@/helpers/registry';
|
|
378
380
|
|
|
379
381
|
// redux
|
|
380
382
|
// ├── api
|
|
@@ -615,7 +617,20 @@ export { default as userReducer } from '@/redux/features/userSlice';
|
|
|
615
617
|
export { default as GenerateModelCodeRowAction } from '@/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction'
|
|
616
618
|
|
|
617
619
|
// types
|
|
618
|
-
export type {
|
|
620
|
+
export type {
|
|
621
|
+
LayoutConfig,
|
|
622
|
+
CommonEntity,
|
|
623
|
+
ModelMetadata,
|
|
624
|
+
ModuleMetadata,
|
|
625
|
+
FieldMetadata,
|
|
626
|
+
FieldsMetadata,
|
|
627
|
+
SolidView,
|
|
628
|
+
LayoutAttribute,
|
|
629
|
+
LayoutNode,
|
|
630
|
+
LayoutNodeType,
|
|
631
|
+
SolidUiEvents,
|
|
632
|
+
SolidUiEvent
|
|
633
|
+
} from '@/types';
|
|
619
634
|
export { GeneralSettings } from '@/components/common/GeneralSettings';
|
|
620
635
|
|
|
621
636
|
export { default as authProviders } from '@/nextAuth/authProviders'
|
package/src/types/index.d.ts
CHANGED
|
@@ -14,6 +14,20 @@ import {
|
|
|
14
14
|
AppConfigProps
|
|
15
15
|
} from './layout';
|
|
16
16
|
|
|
17
|
+
import {
|
|
18
|
+
CommonEntity,
|
|
19
|
+
ModelMetadata,
|
|
20
|
+
ModuleMetadata,
|
|
21
|
+
FieldMetadata,
|
|
22
|
+
FieldsMetadata,
|
|
23
|
+
SolidView,
|
|
24
|
+
LayoutAttribute,
|
|
25
|
+
LayoutNode,
|
|
26
|
+
LayoutNodeType,
|
|
27
|
+
SolidUiEvents,
|
|
28
|
+
SolidUiEvent
|
|
29
|
+
} from './solid-core';
|
|
30
|
+
|
|
17
31
|
type ChildContainerProps = {
|
|
18
32
|
children: ReactNode;
|
|
19
33
|
};
|
|
@@ -29,5 +43,16 @@ export type {
|
|
|
29
43
|
LayoutContextProps,
|
|
30
44
|
ChildContainerProps,
|
|
31
45
|
AppConfigProps,
|
|
32
|
-
MenuContextProps
|
|
46
|
+
MenuContextProps,
|
|
47
|
+
CommonEntity,
|
|
48
|
+
ModelMetadata,
|
|
49
|
+
ModuleMetadata,
|
|
50
|
+
FieldMetadata,
|
|
51
|
+
FieldsMetadata,
|
|
52
|
+
SolidView,
|
|
53
|
+
LayoutAttribute,
|
|
54
|
+
LayoutNode,
|
|
55
|
+
LayoutNodeType,
|
|
56
|
+
SolidUiEvents,
|
|
57
|
+
SolidUiEvent
|
|
33
58
|
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Base type of all Solid entities
|
|
2
|
+
export type CommonEntity = {
|
|
3
|
+
id: number;
|
|
4
|
+
createdAt: string;
|
|
5
|
+
updatedAt: string;
|
|
6
|
+
deletedAt: string | null;
|
|
7
|
+
deletedTracker: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
// Model
|
|
11
|
+
export type ModelMetadata = CommonEntity & {
|
|
12
|
+
singularName: string;
|
|
13
|
+
tableName: string;
|
|
14
|
+
pluralName: string;
|
|
15
|
+
displayName: string;
|
|
16
|
+
description: string;
|
|
17
|
+
dataSource: string;
|
|
18
|
+
dataSourceType: string;
|
|
19
|
+
enableSoftDelete: boolean;
|
|
20
|
+
enableAuditTracking: boolean;
|
|
21
|
+
internationalisation: boolean;
|
|
22
|
+
isSystem: boolean;
|
|
23
|
+
userKeyField: string | null;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// Module
|
|
27
|
+
export type ModuleMetadata = CommonEntity & {
|
|
28
|
+
displayName: string;
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
menuIconUrl: string | null;
|
|
32
|
+
menuSequenceNumber: number;
|
|
33
|
+
defaultDataSource: string;
|
|
34
|
+
isSystem: boolean;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// Define a general Field type with id and name as required properties
|
|
38
|
+
export type FieldMetadata = CommonEntity & {
|
|
39
|
+
id: number;
|
|
40
|
+
name: string;
|
|
41
|
+
displayName: string;
|
|
42
|
+
|
|
43
|
+
// For now we have kept it flexible allowing any number of other key / value pairs...
|
|
44
|
+
[key: string]: any;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Represents a collection of fields.
|
|
48
|
+
export type FieldsMetadata = {
|
|
49
|
+
[key: string]: Field;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// Solid View
|
|
53
|
+
export type SolidView = CommonEntity & {
|
|
54
|
+
name: string;
|
|
55
|
+
displayName: string;
|
|
56
|
+
type: string;
|
|
57
|
+
// TODO: maybe change this in the future to set this to a json object...
|
|
58
|
+
context: string;
|
|
59
|
+
layout: LayoutNode;
|
|
60
|
+
model: Model;
|
|
61
|
+
module: Module;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// Layout Types
|
|
65
|
+
export type LayoutAttribute = {
|
|
66
|
+
name: string;
|
|
67
|
+
label?: string;
|
|
68
|
+
className?: string;
|
|
69
|
+
inlineCreate?: string;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// Generic representation of any node in our layout
|
|
73
|
+
export type LayoutNodeType = "form" | "sheet" | "notebook" | "page" | "row" | "column" | "field";
|
|
74
|
+
export type LayoutNode = {
|
|
75
|
+
type: LayoutNodeType;
|
|
76
|
+
attrs: LayoutAttribute;
|
|
77
|
+
children?: LayoutNode[];
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// Event type
|
|
81
|
+
export type SolidUiEvents = "onFieldChange" | "onFieldBlur";
|
|
82
|
+
export type SolidUiEvent = {
|
|
83
|
+
type: SolidUiEvents;
|
|
84
|
+
modifiedField: string;
|
|
85
|
+
modifiedFieldValue: any;
|
|
86
|
+
// This comes from Formik...
|
|
87
|
+
formData: Record<string, any>;
|
|
88
|
+
viewMetadata: SolidView;
|
|
89
|
+
fieldsMetadata: FieldsMetadata;
|
|
90
|
+
};
|