@solidstarters/create-solid-app 1.2.24 → 1.2.26
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/package.json +1 -1
- package/templates/nest-template/package-lock.json +8 -8
- package/templates/nest-template/package.json +2 -2
- package/templates/next-template/app/solid-extensions.ts +3 -8
- package/templates/next-template/package-lock.json +4 -4
- package/templates/next-template/package.json +1 -1
- package/templates/next-template/redux/store.ts +20 -76
- package/templates/next-template/app/admin/extensions/BookSimilarTitles.tsx +0 -63
- package/templates/next-template/app/admin/extensions/ImageGrid12Column.tsx +0 -132
- package/templates/next-template/app/admin/extensions/bookFormViewBlurHandler.ts +0 -21
- package/templates/next-template/app/admin/extensions/bookFormViewChangeHandler.ts +0 -42
package/package.json
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"@nestjs/serve-static": "^4.0.2",
|
|
28
28
|
"@nestjs/swagger": "^7.2.0",
|
|
29
29
|
"@nestjs/typeorm": "^10.0.1",
|
|
30
|
-
"@solidstarters/solid-core": "^1.2.
|
|
30
|
+
"@solidstarters/solid-core": "^1.2.141",
|
|
31
31
|
"@types/luxon": "^3.4.2",
|
|
32
32
|
"amqplib": "^0.10.4",
|
|
33
33
|
"axios": "^1.7.0",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@nestjs/cli": "^10.0.0",
|
|
70
70
|
"@nestjs/testing": "^10.0.0",
|
|
71
|
-
"@solidstarters/solid-code-builder": "^1.0.
|
|
71
|
+
"@solidstarters/solid-code-builder": "^1.0.29",
|
|
72
72
|
"@types/express": "^4.17.17",
|
|
73
73
|
"@types/hapi__joi": "^17.1.12",
|
|
74
74
|
"@types/jest": "^29.5.2",
|
|
@@ -4621,9 +4621,9 @@
|
|
|
4621
4621
|
}
|
|
4622
4622
|
},
|
|
4623
4623
|
"node_modules/@solidstarters/solid-code-builder": {
|
|
4624
|
-
"version": "1.0.
|
|
4625
|
-
"resolved": "https://registry.npmjs.org/@solidstarters/solid-code-builder/-/solid-code-builder-1.0.
|
|
4626
|
-
"integrity": "sha512-
|
|
4624
|
+
"version": "1.0.29",
|
|
4625
|
+
"resolved": "https://registry.npmjs.org/@solidstarters/solid-code-builder/-/solid-code-builder-1.0.29.tgz",
|
|
4626
|
+
"integrity": "sha512-SFl5nEP14bwb1HC/xivefkn4Z2UCcm5P7IM+5QU1jPaDajLwg2xYGtqzSX5mHesHr0q2yYJv8jRn506puxmbSw==",
|
|
4627
4627
|
"dev": true,
|
|
4628
4628
|
"license": "MIT",
|
|
4629
4629
|
"dependencies": {
|
|
@@ -4666,9 +4666,9 @@
|
|
|
4666
4666
|
}
|
|
4667
4667
|
},
|
|
4668
4668
|
"node_modules/@solidstarters/solid-core": {
|
|
4669
|
-
"version": "1.2.
|
|
4670
|
-
"resolved": "https://registry.npmjs.org/@solidstarters/solid-core/-/solid-core-1.2.
|
|
4671
|
-
"integrity": "sha512-
|
|
4669
|
+
"version": "1.2.141",
|
|
4670
|
+
"resolved": "https://registry.npmjs.org/@solidstarters/solid-core/-/solid-core-1.2.141.tgz",
|
|
4671
|
+
"integrity": "sha512-kKD0MAq9Qqcf9+iVE2my7ukb1nJ4WN3A7JbEg0Nj7snQCDxhiXnfsF2iJGtTySfeKY/drKM72yQTHFL0j7mEUQ==",
|
|
4672
4672
|
"license": "ISC",
|
|
4673
4673
|
"dependencies": {
|
|
4674
4674
|
"@angular-devkit/core": "^18.0.3",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@nestjs/serve-static": "^4.0.2",
|
|
45
45
|
"@nestjs/swagger": "^7.2.0",
|
|
46
46
|
"@nestjs/typeorm": "^10.0.1",
|
|
47
|
-
"@solidstarters/solid-core": "^1.2.
|
|
47
|
+
"@solidstarters/solid-core": "^1.2.141",
|
|
48
48
|
"@types/luxon": "^3.4.2",
|
|
49
49
|
"amqplib": "^0.10.4",
|
|
50
50
|
"axios": "^1.7.0",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@nestjs/cli": "^10.0.0",
|
|
84
84
|
"@nestjs/testing": "^10.0.0",
|
|
85
|
-
"@solidstarters/solid-code-builder": "^1.0.
|
|
85
|
+
"@solidstarters/solid-code-builder": "^1.0.29",
|
|
86
86
|
"@types/express": "^4.17.17",
|
|
87
87
|
"@types/hapi__joi": "^17.1.12",
|
|
88
88
|
"@types/jest": "^29.5.2",
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import { registerExtensionComponent, registerExtensionFunction } from "@solidstarters/solid-core-ui";
|
|
2
|
-
import ImageGrid12Column from "./admin/extensions/ImageGrid12Column";
|
|
3
|
-
import handleBookFormViewChange from "./admin/extensions/bookFormViewChangeHandler";
|
|
4
|
-
import handleBookFormViewBlur from "./admin/extensions/bookFormViewBlurHandler";
|
|
5
|
-
import BookSimilarTitles from "./admin/extensions/BookSimilarTitles";
|
|
6
2
|
|
|
7
3
|
// Registering a custom component
|
|
8
|
-
registerExtensionComponent("BookFormViewDynamicComponent", ImageGrid12Column);
|
|
9
|
-
registerExtensionComponent("BookSimilarTitles", BookSimilarTitles);
|
|
4
|
+
// registerExtensionComponent("BookFormViewDynamicComponent", ImageGrid12Column);
|
|
10
5
|
|
|
11
6
|
// Registering a custom function
|
|
12
|
-
registerExtensionFunction("bookFormViewChangeHandler", handleBookFormViewChange);
|
|
13
|
-
registerExtensionFunction("bookFormViewBlurHandler", handleBookFormViewBlur);
|
|
7
|
+
// registerExtensionFunction("bookFormViewChangeHandler", handleBookFormViewChange);
|
|
8
|
+
// registerExtensionFunction("bookFormViewBlurHandler", handleBookFormViewBlur);
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"@codemirror/theme-one-dark": "^6.1.2",
|
|
14
14
|
"@hello-pangea/dnd": "^17.0.0",
|
|
15
15
|
"@reduxjs/toolkit": "^1.9.5",
|
|
16
|
-
"@solidstarters/solid-core-ui": "^1.1.
|
|
16
|
+
"@solidstarters/solid-core-ui": "^1.1.169",
|
|
17
17
|
"@uiw/react-codemirror": "^4.23.3",
|
|
18
18
|
"axios": "^1.7.2",
|
|
19
19
|
"bcryptjs": "^2.4.3",
|
|
@@ -1001,9 +1001,9 @@
|
|
|
1001
1001
|
}
|
|
1002
1002
|
},
|
|
1003
1003
|
"node_modules/@solidstarters/solid-core-ui": {
|
|
1004
|
-
"version": "1.1.
|
|
1005
|
-
"resolved": "https://registry.npmjs.org/@solidstarters/solid-core-ui/-/solid-core-ui-1.1.
|
|
1006
|
-
"integrity": "sha512-
|
|
1004
|
+
"version": "1.1.169",
|
|
1005
|
+
"resolved": "https://registry.npmjs.org/@solidstarters/solid-core-ui/-/solid-core-ui-1.1.169.tgz",
|
|
1006
|
+
"integrity": "sha512-ONXEfRYf8c67LBcEsAyIcDP7bJ1kVhiTwCV9iwmOrFE+SEwZ91UQ8PaQ7o5h8l6twYH05k42agmK5M7jn3dvww==",
|
|
1007
1007
|
"license": "ISC",
|
|
1008
1008
|
"dependencies": {
|
|
1009
1009
|
"@faker-js/faker": "^9.9.0",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"@codemirror/theme-one-dark": "^6.1.2",
|
|
16
16
|
"@hello-pangea/dnd": "^17.0.0",
|
|
17
17
|
"@reduxjs/toolkit": "^1.9.5",
|
|
18
|
-
"@solidstarters/solid-core-ui": "^1.1.
|
|
18
|
+
"@solidstarters/solid-core-ui": "^1.1.169",
|
|
19
19
|
"@uiw/react-codemirror": "^4.23.3",
|
|
20
20
|
"axios": "^1.7.2",
|
|
21
21
|
"bcryptjs": "^2.4.3",
|
|
@@ -1,90 +1,34 @@
|
|
|
1
1
|
// 'use client';
|
|
2
2
|
// @ts-nocheck
|
|
3
3
|
import { configureStore } from "@reduxjs/toolkit";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import { modulesApi } from "@solidstarters/solid-core-ui";
|
|
10
|
-
import { solidActionsApi } from "@solidstarters/solid-core-ui";
|
|
11
|
-
import { createSolidEntityApi } from "@solidstarters/solid-core-ui";
|
|
12
|
-
import { solidMenusApi } from "@solidstarters/solid-core-ui";
|
|
13
|
-
import { solidViewsApi } from "@solidstarters/solid-core-ui";
|
|
14
|
-
import { userApi } from "@solidstarters/solid-core-ui";
|
|
15
|
-
import { authenticationReducer } from "@solidstarters/solid-core-ui";
|
|
16
|
-
import { dataViewReducer } from "@solidstarters/solid-core-ui";
|
|
17
|
-
import { navbarReducer } from '@solidstarters/solid-core-ui';
|
|
18
|
-
import { popupReducer } from '@solidstarters/solid-core-ui';
|
|
19
|
-
import { themeReducer } from '@solidstarters/solid-core-ui';
|
|
20
|
-
import { userReducer } from "@solidstarters/solid-core-ui";
|
|
21
|
-
import { solidSettingsApi } from "@solidstarters/solid-core-ui";
|
|
22
|
-
import { roleApi } from "@solidstarters/solid-core-ui";
|
|
23
|
-
import { exportTemplateApi } from "@solidstarters/solid-core-ui";
|
|
24
|
-
import { solidChatterMessageApi } from "@solidstarters/solid-core-ui";
|
|
25
|
-
import { solidServiceApi } from "@solidstarters/solid-core-ui";
|
|
26
|
-
import { importTransactionApi } from "@solidstarters/solid-core-ui";
|
|
27
|
-
import {dashboardApi, dashboardQuestionApi, aiInteractionApi} from "@solidstarters/solid-core-ui";
|
|
4
|
+
import {
|
|
5
|
+
solidApiSlices,
|
|
6
|
+
solidReducers,
|
|
7
|
+
createSolidEntityApi
|
|
8
|
+
} from "@solidstarters/solid-core-ui";
|
|
28
9
|
|
|
29
10
|
export function initializeStore(entities: string[] = []) {
|
|
30
11
|
|
|
31
12
|
const reducers = {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
[
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
[solidViewsApi.reducerPath]: solidViewsApi.reducer,
|
|
42
|
-
[solidActionsApi.reducerPath]: solidActionsApi.reducer,
|
|
43
|
-
[solidMenusApi.reducerPath]: solidMenusApi.reducer,
|
|
44
|
-
[solidSettingsApi.reducerPath]: solidSettingsApi.reducer,
|
|
45
|
-
[roleApi.reducerPath]: roleApi.reducer,
|
|
46
|
-
[solidChatterMessageApi.reducerPath]: solidChatterMessageApi.reducer,
|
|
47
|
-
[exportTemplateApi.reducerPath]:exportTemplateApi.reducer,
|
|
48
|
-
[solidServiceApi.reducerPath]: solidServiceApi.reducer,
|
|
49
|
-
[importTransactionApi.reducerPath]: importTransactionApi.reducer,
|
|
50
|
-
[dashboardApi.reducerPath]: dashboardApi.reducer,
|
|
51
|
-
[dashboardQuestionApi.reducerPath]: dashboardQuestionApi.reducer,
|
|
52
|
-
[aiInteractionApi.reducerPath]: aiInteractionApi.reducer,
|
|
53
|
-
|
|
54
|
-
// This has now become dynamica and is added using the for loop below
|
|
55
|
-
// [solidCountryApi.reducerPath]: solidCountryApi.reducer,
|
|
56
|
-
|
|
57
|
-
theme: themeReducer,
|
|
58
|
-
popup: popupReducer,
|
|
59
|
-
navbarState: navbarReducer,
|
|
60
|
-
dataViewState: dataViewReducer
|
|
13
|
+
...solidReducers,
|
|
14
|
+
...Object.fromEntries(
|
|
15
|
+
solidApiSlices.map(api => [api.reducerPath, api.reducer])
|
|
16
|
+
),
|
|
17
|
+
//add anditional custom api slice
|
|
18
|
+
//eg. [customImportTransactionApi.reducerPath]: customImportTransactionApi.reducer,
|
|
19
|
+
|
|
20
|
+
// Add any additional reducers here
|
|
21
|
+
// eg.theme: themeReducer,
|
|
61
22
|
};
|
|
62
23
|
|
|
63
|
-
const middlewares = [
|
|
64
|
-
authApi.middleware,
|
|
65
|
-
userApi.middleware,
|
|
66
|
-
modulesApi.middleware,
|
|
67
|
-
modelsApi.middleware,
|
|
68
|
-
fieldsApi.middleware,
|
|
69
|
-
mediaStorageProviderApi.middleware,
|
|
70
|
-
mediaApi.middleware,
|
|
71
|
-
solidViewsApi.middleware,
|
|
72
|
-
solidActionsApi.middleware,
|
|
73
|
-
solidMenusApi.middleware,
|
|
74
|
-
solidSettingsApi.middleware,
|
|
75
|
-
roleApi.middleware,
|
|
76
|
-
solidChatterMessageApi.middleware,
|
|
77
|
-
exportTemplateApi.middleware,
|
|
78
|
-
solidServiceApi.middleware,
|
|
79
|
-
importTransactionApi.middleware,
|
|
80
|
-
dashboardApi.middleware,
|
|
81
|
-
dashboardQuestionApi.middleware,
|
|
82
|
-
aiInteractionApi.middleware,
|
|
83
24
|
|
|
84
|
-
|
|
85
|
-
|
|
25
|
+
const middlewares = [
|
|
26
|
+
...solidApiSlices.map(api => api.middleware),
|
|
27
|
+
//add any additional custom middlewares here
|
|
28
|
+
//eg. customImportTransactionApi.middleware,
|
|
86
29
|
];
|
|
87
30
|
|
|
31
|
+
|
|
88
32
|
for (let i = 0; i < entities.length; i++) {
|
|
89
33
|
const entity = entities[i];
|
|
90
34
|
|
|
@@ -105,4 +49,4 @@ export function initializeStore(entities: string[] = []) {
|
|
|
105
49
|
}
|
|
106
50
|
|
|
107
51
|
// export type RootState = ReturnType<ReturnType<typeof initializeStore>['getState']>;
|
|
108
|
-
// export type AppDispatch = ReturnType<typeof initializeStore>['dispatch']
|
|
52
|
+
// export type AppDispatch = ReturnType<typeof initializeStore>['dispatch']
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import Image from "next/image";
|
|
4
|
-
import { useEffect, useState } from "react";
|
|
5
|
-
import { SolidFormWidgetProps } from '@solidstarters/solid-core-ui';
|
|
6
|
-
|
|
7
|
-
const BookSimilarTitles = ({ formData, field, fieldsMetadata, viewMetadata }: SolidFormWidgetProps) => {
|
|
8
|
-
const [books, setBooks] = useState<any[]>([]);
|
|
9
|
-
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
|
|
12
|
-
const myHeaders = new Headers();
|
|
13
|
-
myHeaders.append("Authorization", "AIzaSyDxskVYoHM7b1sY_6_9SHb471Ue_CC1Yh8");
|
|
14
|
-
|
|
15
|
-
const requestOptions = {
|
|
16
|
-
method: "GET",
|
|
17
|
-
headers: myHeaders
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
async function fetchBookData() {
|
|
21
|
-
try {
|
|
22
|
-
const title = formData['title'];
|
|
23
|
-
console.log(`Fetching similar titles for ${title}`);
|
|
24
|
-
|
|
25
|
-
const endpoint = `https://www.googleapis.com/books/v1/volumes?q=${title}&maxResults=40`;
|
|
26
|
-
const response = await fetch(encodeURI(endpoint), requestOptions);
|
|
27
|
-
const result = await response.json();
|
|
28
|
-
console.log(`Loaded similar titles from Google Books API`, result);
|
|
29
|
-
setBooks(result.items);
|
|
30
|
-
} catch (error) {
|
|
31
|
-
console.error(error);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Call the function
|
|
36
|
-
fetchBookData();
|
|
37
|
-
}, []);
|
|
38
|
-
|
|
39
|
-
return (
|
|
40
|
-
<>
|
|
41
|
-
<div className="flex justify-center">
|
|
42
|
-
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-12 gap-4" style={{ minWidth: "30vw" }}>
|
|
43
|
-
{books.map((book, index) => (
|
|
44
|
-
<div key={index} className=" h-32 relative" style={{ width: "100px", height: "100px" }}>
|
|
45
|
-
<a target="_blank" href={book.volumeInfo.infoLink}>
|
|
46
|
-
<Image
|
|
47
|
-
src={book.volumeInfo.imageLinks?.thumbnail}
|
|
48
|
-
alt={`Book description: ${book.volumeInfo.description}`}
|
|
49
|
-
layout="fill"
|
|
50
|
-
objectFit="cover"
|
|
51
|
-
className="rounded"
|
|
52
|
-
unoptimized={true}
|
|
53
|
-
/>
|
|
54
|
-
</a>
|
|
55
|
-
</div>
|
|
56
|
-
))}
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
</>
|
|
60
|
-
);
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
export default BookSimilarTitles
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import Image from "next/image";
|
|
4
|
-
import { useEffect, useState } from "react";
|
|
5
|
-
|
|
6
|
-
const ImageGrid12Column = () => {
|
|
7
|
-
const [images, setImages] = useState<string[]>([]);
|
|
8
|
-
|
|
9
|
-
useEffect(() => {
|
|
10
|
-
setImages([
|
|
11
|
-
"https://randomuser.me/api/portraits/women/29.jpg",
|
|
12
|
-
"https://randomuser.me/api/portraits/women/29.jpg",
|
|
13
|
-
"https://randomuser.me/api/portraits/women/31.jpg",
|
|
14
|
-
"https://randomuser.me/api/portraits/women/44.jpg",
|
|
15
|
-
"https://randomuser.me/api/portraits/women/81.jpg",
|
|
16
|
-
"https://randomuser.me/api/portraits/women/80.jpg",
|
|
17
|
-
"https://randomuser.me/api/portraits/women/64.jpg",
|
|
18
|
-
"https://randomuser.me/api/portraits/women/61.jpg",
|
|
19
|
-
"https://randomuser.me/api/portraits/women/28.jpg",
|
|
20
|
-
"https://randomuser.me/api/portraits/women/40.jpg",
|
|
21
|
-
"https://randomuser.me/api/portraits/women/91.jpg",
|
|
22
|
-
"https://randomuser.me/api/portraits/women/63.jpg",
|
|
23
|
-
"https://randomuser.me/api/portraits/women/73.jpg",
|
|
24
|
-
"https://randomuser.me/api/portraits/women/6.jpg",
|
|
25
|
-
"https://randomuser.me/api/portraits/women/30.jpg",
|
|
26
|
-
"https://randomuser.me/api/portraits/women/42.jpg",
|
|
27
|
-
"https://randomuser.me/api/portraits/women/78.jpg",
|
|
28
|
-
"https://randomuser.me/api/portraits/women/14.jpg",
|
|
29
|
-
"https://randomuser.me/api/portraits/women/52.jpg",
|
|
30
|
-
"https://randomuser.me/api/portraits/women/55.jpg",
|
|
31
|
-
"https://randomuser.me/api/portraits/women/2.jpg",
|
|
32
|
-
"https://randomuser.me/api/portraits/women/75.jpg",
|
|
33
|
-
"https://randomuser.me/api/portraits/women/24.jpg",
|
|
34
|
-
"https://randomuser.me/api/portraits/women/15.jpg",
|
|
35
|
-
"https://randomuser.me/api/portraits/women/48.jpg",
|
|
36
|
-
"https://randomuser.me/api/portraits/women/54.jpg",
|
|
37
|
-
"https://randomuser.me/api/portraits/women/47.jpg",
|
|
38
|
-
"https://randomuser.me/api/portraits/women/43.jpg",
|
|
39
|
-
"https://randomuser.me/api/portraits/women/39.jpg",
|
|
40
|
-
"https://randomuser.me/api/portraits/women/57.jpg",
|
|
41
|
-
"https://randomuser.me/api/portraits/women/37.jpg",
|
|
42
|
-
"https://randomuser.me/api/portraits/women/22.jpg",
|
|
43
|
-
"https://randomuser.me/api/portraits/women/85.jpg",
|
|
44
|
-
"https://randomuser.me/api/portraits/women/69.jpg",
|
|
45
|
-
"https://randomuser.me/api/portraits/women/90.jpg",
|
|
46
|
-
"https://randomuser.me/api/portraits/women/18.jpg",
|
|
47
|
-
"https://randomuser.me/api/portraits/women/8.jpg",
|
|
48
|
-
"https://randomuser.me/api/portraits/women/87.jpg",
|
|
49
|
-
"https://randomuser.me/api/portraits/women/82.jpg",
|
|
50
|
-
"https://randomuser.me/api/portraits/women/71.jpg",
|
|
51
|
-
"https://randomuser.me/api/portraits/women/45.jpg",
|
|
52
|
-
"https://randomuser.me/api/portraits/women/12.jpg",
|
|
53
|
-
"https://randomuser.me/api/portraits/women/5.jpg",
|
|
54
|
-
"https://randomuser.me/api/portraits/women/16.jpg",
|
|
55
|
-
"https://randomuser.me/api/portraits/women/84.jpg",
|
|
56
|
-
"https://randomuser.me/api/portraits/women/11.jpg",
|
|
57
|
-
"https://randomuser.me/api/portraits/women/59.jpg",
|
|
58
|
-
"https://randomuser.me/api/portraits/women/19.jpg",
|
|
59
|
-
"https://randomuser.me/api/portraits/women/27.jpg",
|
|
60
|
-
"https://randomuser.me/api/portraits/women/7.jpg",
|
|
61
|
-
"https://randomuser.me/api/portraits/women/49.jpg",
|
|
62
|
-
"https://randomuser.me/api/portraits/women/83.jpg",
|
|
63
|
-
"https://randomuser.me/api/portraits/women/33.jpg",
|
|
64
|
-
"https://randomuser.me/api/portraits/women/3.jpg",
|
|
65
|
-
"https://randomuser.me/api/portraits/women/17.jpg",
|
|
66
|
-
"https://randomuser.me/api/portraits/women/13.jpg",
|
|
67
|
-
"https://randomuser.me/api/portraits/women/77.jpg",
|
|
68
|
-
"https://randomuser.me/api/portraits/women/50.jpg",
|
|
69
|
-
"https://randomuser.me/api/portraits/women/0.jpg",
|
|
70
|
-
"https://randomuser.me/api/portraits/women/67.jpg",
|
|
71
|
-
"https://randomuser.me/api/portraits/women/68.jpg",
|
|
72
|
-
"https://randomuser.me/api/portraits/women/65.jpg",
|
|
73
|
-
"https://randomuser.me/api/portraits/women/66.jpg",
|
|
74
|
-
"https://randomuser.me/api/portraits/women/94.jpg",
|
|
75
|
-
"https://randomuser.me/api/portraits/women/38.jpg",
|
|
76
|
-
"https://randomuser.me/api/portraits/women/88.jpg",
|
|
77
|
-
"https://randomuser.me/api/portraits/women/1.jpg",
|
|
78
|
-
"https://randomuser.me/api/portraits/women/36.jpg",
|
|
79
|
-
"https://randomuser.me/api/portraits/women/20.jpg",
|
|
80
|
-
"https://randomuser.me/api/portraits/women/70.jpg",
|
|
81
|
-
"https://randomuser.me/api/portraits/women/21.jpg",
|
|
82
|
-
"https://randomuser.me/api/portraits/women/34.jpg",
|
|
83
|
-
"https://randomuser.me/api/portraits/women/46.jpg",
|
|
84
|
-
"https://randomuser.me/api/portraits/women/4.jpg",
|
|
85
|
-
"https://randomuser.me/api/portraits/women/58.jpg",
|
|
86
|
-
"https://randomuser.me/api/portraits/women/32.jpg",
|
|
87
|
-
"https://randomuser.me/api/portraits/women/76.jpg",
|
|
88
|
-
"https://randomuser.me/api/portraits/women/9.jpg",
|
|
89
|
-
"https://randomuser.me/api/portraits/women/51.jpg",
|
|
90
|
-
"https://randomuser.me/api/portraits/women/72.jpg",
|
|
91
|
-
"https://randomuser.me/api/portraits/women/89.jpg",
|
|
92
|
-
"https://randomuser.me/api/portraits/women/92.jpg",
|
|
93
|
-
"https://randomuser.me/api/portraits/women/86.jpg",
|
|
94
|
-
"https://randomuser.me/api/portraits/women/35.jpg",
|
|
95
|
-
"https://randomuser.me/api/portraits/women/62.jpg",
|
|
96
|
-
"https://randomuser.me/api/portraits/women/23.jpg",
|
|
97
|
-
"https://randomuser.me/api/portraits/women/53.jpg",
|
|
98
|
-
"https://randomuser.me/api/portraits/women/10.jpg",
|
|
99
|
-
"https://randomuser.me/api/portraits/women/74.jpg",
|
|
100
|
-
"https://randomuser.me/api/portraits/women/79.jpg",
|
|
101
|
-
"https://randomuser.me/api/portraits/women/93.jpg",
|
|
102
|
-
"https://randomuser.me/api/portraits/women/25.jpg",
|
|
103
|
-
"https://randomuser.me/api/portraits/women/26.jpg",
|
|
104
|
-
"https://randomuser.me/api/portraits/women/56.jpg",
|
|
105
|
-
"https://randomuser.me/api/portraits/women/41.jpg",
|
|
106
|
-
"https://randomuser.me/api/portraits/women/60.jpg",
|
|
107
|
-
]);
|
|
108
|
-
}, []);
|
|
109
|
-
|
|
110
|
-
return (
|
|
111
|
-
<>
|
|
112
|
-
<div className="flex justify-center">
|
|
113
|
-
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-12 gap-4" style={{ minWidth: "30vw" }}>
|
|
114
|
-
{images.map((src, index) => (
|
|
115
|
-
<div key={index} className=" h-32 relative" style={{ width: "100px", height: "100px" }}>
|
|
116
|
-
<Image
|
|
117
|
-
src={src}
|
|
118
|
-
alt={`Image ${index + 1}`}
|
|
119
|
-
layout="fill"
|
|
120
|
-
objectFit="cover"
|
|
121
|
-
className="rounded"
|
|
122
|
-
unoptimized={true} // Temporarily bypass Next.js optimization
|
|
123
|
-
/>
|
|
124
|
-
</div>
|
|
125
|
-
))}
|
|
126
|
-
</div>
|
|
127
|
-
</div>
|
|
128
|
-
</>
|
|
129
|
-
);
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
export default ImageGrid12Column
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { SolidUiEvent, SolidViewLayoutManager } from '@solidstarters/solid-core-ui';
|
|
2
|
-
|
|
3
|
-
const handleBookFormViewBlur = (event: SolidUiEvent) => {
|
|
4
|
-
console.log(`handleBookFormViewBlur event triggered:`);
|
|
5
|
-
console.log(event);
|
|
6
|
-
|
|
7
|
-
const { type, modifiedField, formData, viewMetadata, fieldsMetadata } = event;
|
|
8
|
-
|
|
9
|
-
// TODO: make an api call to get title & pageCount given the ISBN.
|
|
10
|
-
if (modifiedField === 'isbn') {
|
|
11
|
-
// return {
|
|
12
|
-
// layoutChanged: false,
|
|
13
|
-
// dataChanged: true,
|
|
14
|
-
// newFormData: {
|
|
15
|
-
// title: 'The Oxygen Advantage',
|
|
16
|
-
// pageCount: '277',
|
|
17
|
-
// },
|
|
18
|
-
// }
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export default handleBookFormViewBlur;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { SolidUiEvent, SolidViewLayoutManager } from '@solidstarters/solid-core-ui';
|
|
2
|
-
|
|
3
|
-
const handleBookFormViewChange = (event: SolidUiEvent) => {
|
|
4
|
-
console.log(`handleBookFormViewChange triggered:`);
|
|
5
|
-
console.log(event);
|
|
6
|
-
|
|
7
|
-
const { type, modifiedField, modifiedFieldValue, formData, viewMetadata, fieldsMetadata } = event;
|
|
8
|
-
const layout = viewMetadata.layout;
|
|
9
|
-
const model = viewMetadata.model;
|
|
10
|
-
const module = viewMetadata.module;
|
|
11
|
-
const viewName = viewMetadata.name;
|
|
12
|
-
|
|
13
|
-
// handle change to title.
|
|
14
|
-
// TODO: here we intend on injecting something in the form context which we will then use to render a message somewhere on the form view.
|
|
15
|
-
if (modifiedField === 'title') {
|
|
16
|
-
// const title = formData['title'];
|
|
17
|
-
const title = modifiedFieldValue;
|
|
18
|
-
const layoutManager = new SolidViewLayoutManager(layout);
|
|
19
|
-
layoutManager.updateNodeAttributes('page-1-row-1-div-1-div-1-title-custom', { visible: true });
|
|
20
|
-
return {
|
|
21
|
-
layoutChanged: true,
|
|
22
|
-
dataChanged: true,
|
|
23
|
-
newFormData: {
|
|
24
|
-
ctxtTitleAlphpabetCount: title ? title.length : 0
|
|
25
|
-
},
|
|
26
|
-
newLayout: layoutManager.getLayout()
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (modifiedField === 'enableSeo') {
|
|
31
|
-
// const enableSeo = formData['enableSeo'];
|
|
32
|
-
// console.log(`Examining enableSeo: `, enableSeo);
|
|
33
|
-
const layoutManager = new SolidViewLayoutManager(layout);
|
|
34
|
-
layoutManager.updateNodeAttributes('page-4', { visible: (modifiedFieldValue.value === 'yes') });
|
|
35
|
-
return {
|
|
36
|
-
layoutChanged: true,
|
|
37
|
-
newLayout: layoutManager.getLayout(),
|
|
38
|
-
dataChanged: false,
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export default handleBookFormViewChange;
|