@solidstarters/create-solid-app 1.2.25 → 1.2.27
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 +81 -15
- package/templates/nest-template/package.json +2 -2
- package/templates/nest-template/src/main.ts +8 -0
- 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/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.150",
|
|
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.150",
|
|
4670
|
+
"resolved": "https://registry.npmjs.org/@solidstarters/solid-core/-/solid-core-1.2.150.tgz",
|
|
4671
|
+
"integrity": "sha512-KL0ZB5OnOrsURZVhuOP35ee4unhy5Hb6IDOhm/T3CXGjlgS18V8isNYO5yKmSwtlYqicxrkx44x58gnrz32fdQ==",
|
|
4672
4672
|
"license": "ISC",
|
|
4673
4673
|
"dependencies": {
|
|
4674
4674
|
"@angular-devkit/core": "^18.0.3",
|
|
@@ -4706,6 +4706,7 @@
|
|
|
4706
4706
|
"reflect-metadata": "^0.1.13",
|
|
4707
4707
|
"rxjs": "^7.8.1",
|
|
4708
4708
|
"swagger-ui-express": "^5.0.0",
|
|
4709
|
+
"twilio": "^5.8.0",
|
|
4709
4710
|
"uuid": "^9.0.1",
|
|
4710
4711
|
"xlsx": "^0.18.5"
|
|
4711
4712
|
},
|
|
@@ -6113,13 +6114,13 @@
|
|
|
6113
6114
|
}
|
|
6114
6115
|
},
|
|
6115
6116
|
"node_modules/axios": {
|
|
6116
|
-
"version": "1.
|
|
6117
|
-
"resolved": "https://registry.npmjs.org/axios/-/axios-1.
|
|
6118
|
-
"integrity": "sha512-
|
|
6117
|
+
"version": "1.11.0",
|
|
6118
|
+
"resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz",
|
|
6119
|
+
"integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==",
|
|
6119
6120
|
"license": "MIT",
|
|
6120
6121
|
"dependencies": {
|
|
6121
6122
|
"follow-redirects": "^1.15.6",
|
|
6122
|
-
"form-data": "^4.0.
|
|
6123
|
+
"form-data": "^4.0.4",
|
|
6123
6124
|
"proxy-from-env": "^1.1.0"
|
|
6124
6125
|
}
|
|
6125
6126
|
},
|
|
@@ -8201,6 +8202,21 @@
|
|
|
8201
8202
|
"node": ">= 0.4"
|
|
8202
8203
|
}
|
|
8203
8204
|
},
|
|
8205
|
+
"node_modules/es-set-tostringtag": {
|
|
8206
|
+
"version": "2.1.0",
|
|
8207
|
+
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
|
|
8208
|
+
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
|
|
8209
|
+
"license": "MIT",
|
|
8210
|
+
"dependencies": {
|
|
8211
|
+
"es-errors": "^1.3.0",
|
|
8212
|
+
"get-intrinsic": "^1.2.6",
|
|
8213
|
+
"has-tostringtag": "^1.0.2",
|
|
8214
|
+
"hasown": "^2.0.2"
|
|
8215
|
+
},
|
|
8216
|
+
"engines": {
|
|
8217
|
+
"node": ">= 0.4"
|
|
8218
|
+
}
|
|
8219
|
+
},
|
|
8204
8220
|
"node_modules/escalade": {
|
|
8205
8221
|
"version": "3.2.0",
|
|
8206
8222
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
|
@@ -9383,13 +9399,15 @@
|
|
|
9383
9399
|
}
|
|
9384
9400
|
},
|
|
9385
9401
|
"node_modules/form-data": {
|
|
9386
|
-
"version": "4.0.
|
|
9387
|
-
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.
|
|
9388
|
-
"integrity": "sha512-
|
|
9402
|
+
"version": "4.0.4",
|
|
9403
|
+
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
|
|
9404
|
+
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
|
|
9389
9405
|
"license": "MIT",
|
|
9390
9406
|
"dependencies": {
|
|
9391
9407
|
"asynckit": "^0.4.0",
|
|
9392
9408
|
"combined-stream": "^1.0.8",
|
|
9409
|
+
"es-set-tostringtag": "^2.1.0",
|
|
9410
|
+
"hasown": "^2.0.2",
|
|
9393
9411
|
"mime-types": "^2.1.12"
|
|
9394
9412
|
},
|
|
9395
9413
|
"engines": {
|
|
@@ -9889,6 +9907,21 @@
|
|
|
9889
9907
|
"url": "https://github.com/sponsors/ljharb"
|
|
9890
9908
|
}
|
|
9891
9909
|
},
|
|
9910
|
+
"node_modules/has-tostringtag": {
|
|
9911
|
+
"version": "1.0.2",
|
|
9912
|
+
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
|
|
9913
|
+
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
|
|
9914
|
+
"license": "MIT",
|
|
9915
|
+
"dependencies": {
|
|
9916
|
+
"has-symbols": "^1.0.3"
|
|
9917
|
+
},
|
|
9918
|
+
"engines": {
|
|
9919
|
+
"node": ">= 0.4"
|
|
9920
|
+
},
|
|
9921
|
+
"funding": {
|
|
9922
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
9923
|
+
}
|
|
9924
|
+
},
|
|
9892
9925
|
"node_modules/has-unicode": {
|
|
9893
9926
|
"version": "2.0.1",
|
|
9894
9927
|
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
|
|
@@ -14510,6 +14543,12 @@
|
|
|
14510
14543
|
"dev": true,
|
|
14511
14544
|
"license": "MIT"
|
|
14512
14545
|
},
|
|
14546
|
+
"node_modules/scmp": {
|
|
14547
|
+
"version": "2.1.0",
|
|
14548
|
+
"resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz",
|
|
14549
|
+
"integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==",
|
|
14550
|
+
"license": "BSD-3-Clause"
|
|
14551
|
+
},
|
|
14513
14552
|
"node_modules/semver": {
|
|
14514
14553
|
"version": "6.3.1",
|
|
14515
14554
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
|
@@ -15931,6 +15970,24 @@
|
|
|
15931
15970
|
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
|
15932
15971
|
"license": "0BSD"
|
|
15933
15972
|
},
|
|
15973
|
+
"node_modules/twilio": {
|
|
15974
|
+
"version": "5.8.0",
|
|
15975
|
+
"resolved": "https://registry.npmjs.org/twilio/-/twilio-5.8.0.tgz",
|
|
15976
|
+
"integrity": "sha512-aJLBvI7ODLmFHI7ZYLBiMZKIdHuF9PrPeRM/GBMDg/AAzGXs4V8gEnNPHyTVThK0/8J48YHSqXMlQ+WJR5nxoQ==",
|
|
15977
|
+
"license": "MIT",
|
|
15978
|
+
"dependencies": {
|
|
15979
|
+
"axios": "^1.11.0",
|
|
15980
|
+
"dayjs": "^1.11.9",
|
|
15981
|
+
"https-proxy-agent": "^5.0.0",
|
|
15982
|
+
"jsonwebtoken": "^9.0.2",
|
|
15983
|
+
"qs": "^6.9.4",
|
|
15984
|
+
"scmp": "^2.1.0",
|
|
15985
|
+
"xmlbuilder": "^13.0.2"
|
|
15986
|
+
},
|
|
15987
|
+
"engines": {
|
|
15988
|
+
"node": ">=14.0"
|
|
15989
|
+
}
|
|
15990
|
+
},
|
|
15934
15991
|
"node_modules/type-check": {
|
|
15935
15992
|
"version": "0.4.0",
|
|
15936
15993
|
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
|
|
@@ -16894,6 +16951,15 @@
|
|
|
16894
16951
|
"node": ">=0.8"
|
|
16895
16952
|
}
|
|
16896
16953
|
},
|
|
16954
|
+
"node_modules/xmlbuilder": {
|
|
16955
|
+
"version": "13.0.2",
|
|
16956
|
+
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz",
|
|
16957
|
+
"integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==",
|
|
16958
|
+
"license": "MIT",
|
|
16959
|
+
"engines": {
|
|
16960
|
+
"node": ">=6.0"
|
|
16961
|
+
}
|
|
16962
|
+
},
|
|
16897
16963
|
"node_modules/xmlchars": {
|
|
16898
16964
|
"version": "2.2.0",
|
|
16899
16965
|
"resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
|
|
@@ -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.150",
|
|
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",
|
|
@@ -17,6 +17,14 @@ import { AppModule } from './app.module';
|
|
|
17
17
|
|
|
18
18
|
import qs from 'qs';
|
|
19
19
|
|
|
20
|
+
// ---- Global safety nets (must be first) ----
|
|
21
|
+
process.on('unhandledRejection', (reason, promise) => {
|
|
22
|
+
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
23
|
+
});
|
|
24
|
+
process.on('uncaughtException', (err) => {
|
|
25
|
+
console.error('Uncaught Exception:', err);
|
|
26
|
+
});
|
|
27
|
+
|
|
20
28
|
async function bootstrap() {
|
|
21
29
|
const appModule = await AppModule.forRoot();
|
|
22
30
|
const app = await NestFactory.create(appModule);
|
|
@@ -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.175",
|
|
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.175",
|
|
1005
|
+
"resolved": "https://registry.npmjs.org/@solidstarters/solid-core-ui/-/solid-core-ui-1.1.175.tgz",
|
|
1006
|
+
"integrity": "sha512-zsB3eapdzgD2eTaX1n7F4LGuHC/6CbhWcMAhaQ7n0Y4DVscx6KcQ04Q/I3ECCfrsf8v4921g6JLs/5YgCoczDw==",
|
|
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.175",
|
|
19
19
|
"@uiw/react-codemirror": "^4.23.3",
|
|
20
20
|
"axios": "^1.7.2",
|
|
21
21
|
"bcryptjs": "^2.4.3",
|
|
@@ -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;
|