@solidstarters/create-solid-app 1.2.15 → 1.2.16
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/helpers.js +2 -0
- 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/GlobalProvider.tsx +4 -0
- package/templates/next-template/app/admin/core/[moduleName]/home/page.tsx +3 -2
- package/templates/next-template/app/admin/extensions/BookSimilarTitles.tsx +63 -0
- package/templates/next-template/app/admin/extensions/ImageGrid12Column.tsx +132 -0
- package/templates/next-template/app/admin/extensions/bookFormViewBlurHandler.ts +21 -0
- package/templates/next-template/app/admin/extensions/bookFormViewChangeHandler.ts +42 -0
- package/templates/next-template/app/layout.tsx +3 -15
- package/templates/next-template/app/solid-extensions.ts +13 -0
- package/templates/next-template/dot-templates/dot.gitignore.template +2 -0
- package/templates/next-template/package-lock.json +1023 -12
- package/templates/next-template/package.json +2 -1
- package/templates/next-template/app/error.tsx +0 -30
- package/templates/next-template/app/favicon.ico +0 -0
- package/templates/next-template/app/globals.css +0 -2516
- package/templates/next-template/app/head.tsx +0 -17
- package/templates/next-template/app/loading.tsx +0 -10
- package/templates/next-template/app/not-found.tsx +0 -25
- package/templates/next-template/app/page.module.css +0 -229
- package/templates/next-template/app/page.tsx +0 -11
- package/templates/next-template/app/solid-global.css +0 -2
- package/templates/next-template/app/solid-stylesheet.css +0 -25
- package/templates/next-template/public/images/AvatarDemo.png +0 -0
- package/templates/next-template/public/images/Footerbg.png +0 -0
- package/templates/next-template/public/images/LoginBanner.png +0 -0
- package/templates/next-template/public/images/Navigation/Level.svg +0 -5
- package/templates/next-template/public/images/Navigation/Presure.svg +0 -7
- package/templates/next-template/public/images/Navigation/Temperature.svg +0 -13
- package/templates/next-template/public/images/Navigation/settings.png +0 -0
- package/templates/next-template/public/images/Profile/Avatar.png +0 -0
- package/templates/next-template/public/images/SS-Logo-1 1.png +0 -0
- package/templates/next-template/public/images/activity.svg +0 -3
- package/templates/next-template/public/images/app-builder.png +0 -0
- package/templates/next-template/public/images/auth/solid-left-layout-bg.png +0 -0
- package/templates/next-template/public/images/auth/solid-login-light.png +0 -0
- package/templates/next-template/public/images/auth/solid-right-layout-bg.png +0 -0
- package/templates/next-template/public/images/clog-wheel.png +0 -0
- package/templates/next-template/public/images/dark-mode.png +0 -0
- package/templates/next-template/public/images/dashboard/Ellipse 1.svg +0 -10
- package/templates/next-template/public/images/dashboard/Rectangle 17.svg +0 -10
- package/templates/next-template/public/images/dashboard/Rectangle 25.svg +0 -11
- package/templates/next-template/public/images/dashboard/image 5.svg +0 -9
- package/templates/next-template/public/images/eye-icon.png +0 -0
- package/templates/next-template/public/images/fb.svg +0 -3
- package/templates/next-template/public/images/fileReader/image-jpg.png +0 -0
- package/templates/next-template/public/images/filter-icon.png +0 -0
- package/templates/next-template/public/images/form/user.png +0 -0
- package/templates/next-template/public/images/iam.png +0 -0
- package/templates/next-template/public/images/icons/icon-activity.svg +0 -3
- package/templates/next-template/public/images/icons/icon-calender.svg +0 -3
- package/templates/next-template/public/images/icons/icon-graph.svg +0 -3
- package/templates/next-template/public/images/icons/icon-kanban.svg +0 -3
- package/templates/next-template/public/images/icons/icon-list.svg +0 -3
- package/templates/next-template/public/images/icons/icon-users.svg +0 -3
- package/templates/next-template/public/images/icons/jump-to-icon.png +0 -0
- package/templates/next-template/public/images/insta.svg +0 -3
- package/templates/next-template/public/images/layout/images/comfortable.png +0 -0
- package/templates/next-template/public/images/layout/images/compact.png +0 -0
- package/templates/next-template/public/images/layout/images/cozy.png +0 -0
- package/templates/next-template/public/images/layout/images/kanban.png +0 -0
- package/templates/next-template/public/images/li.svg +0 -3
- package/templates/next-template/public/images/loginhero.png +0 -0
- package/templates/next-template/public/images/logo.png +0 -0
- package/templates/next-template/public/images/mail-icon.png +0 -0
- package/templates/next-template/public/images/menu/app-builder.svg +0 -19
- package/templates/next-template/public/images/menu/iam.svg +0 -14
- package/templates/next-template/public/images/menu/logicloop-black.svg +0 -28
- package/templates/next-template/public/images/menu/logicloop-blue.svg +0 -32
- package/templates/next-template/public/images/menu/logicloop-white.svg +0 -32
- package/templates/next-template/public/images/menu/queues.svg +0 -14
- package/templates/next-template/public/images/menu/radix.svg +0 -9
- package/templates/next-template/public/images/menu/rl-lead-middleware.svg +0 -19
- package/templates/next-template/public/images/menu/solid-address-master.svg +0 -10
- package/templates/next-template/public/images/menu/srmd-tracker-black.svg +0 -16
- package/templates/next-template/public/images/menu/srmd-tracker-original.svg +0 -32
- package/templates/next-template/public/images/menu/srmd-tracker-white.svg +0 -17
- package/templates/next-template/public/images/menu/srmd-tracker.svg +0 -16
- package/templates/next-template/public/images/menu-icon.png +0 -0
- package/templates/next-template/public/images/menu-toggle.png +0 -0
- package/templates/next-template/public/images/password-icon.png +0 -0
- package/templates/next-template/public/images/profile.png +0 -0
- package/templates/next-template/public/images/radix-logo-white.png +0 -0
- package/templates/next-template/public/images/radix-logo.png +0 -0
- package/templates/next-template/public/images/search-icon.png +0 -0
- package/templates/next-template/public/images/signupBanner.png +0 -0
- package/templates/next-template/public/images/tw.svg +0 -3
- package/templates/next-template/public/images/user-icon.png +0 -0
- package/templates/next-template/public/styles/SF-Pro-Display-Regular.otf +0 -0
- package/templates/next-template/public/styles/layout/_config.scss +0 -54
- package/templates/next-template/public/styles/layout/_content.scss +0 -77
- package/templates/next-template/public/styles/layout/_footer.scss +0 -8
- package/templates/next-template/public/styles/layout/_main.scss +0 -47
- package/templates/next-template/public/styles/layout/_menu.scss +0 -185
- package/templates/next-template/public/styles/layout/_mixins.scss +0 -13
- package/templates/next-template/public/styles/layout/_responsive.scss +0 -99
- package/templates/next-template/public/styles/layout/_topbar.scss +0 -149
- package/templates/next-template/public/styles/layout/_typography.scss +0 -63
- package/templates/next-template/public/styles/layout/_utils.scss +0 -27
- package/templates/next-template/public/styles/layout/_variables.scss +0 -3
- package/templates/next-template/public/styles/layout/layout.scss +0 -11
- package/templates/next-template/public/themes/solid-dark-purple/fonts/SF-Pro-Display-Black.otf +0 -0
- package/templates/next-template/public/themes/solid-dark-purple/fonts/SF-Pro-Display-Bold.otf +0 -0
- package/templates/next-template/public/themes/solid-dark-purple/fonts/SF-Pro-Display-Heavy.otf +0 -0
- package/templates/next-template/public/themes/solid-dark-purple/fonts/SF-Pro-Display-Light.otf +0 -0
- package/templates/next-template/public/themes/solid-dark-purple/fonts/SF-Pro-Display-Medium.otf +0 -0
- package/templates/next-template/public/themes/solid-dark-purple/fonts/SF-Pro-Display-Regular.otf +0 -0
- package/templates/next-template/public/themes/solid-dark-purple/fonts/SF-Pro-Display-Semibold.otf +0 -0
- package/templates/next-template/public/themes/solid-dark-purple/fonts/SF-Pro-Display-Thin.otf +0 -0
- package/templates/next-template/public/themes/solid-dark-purple/fonts/SF-Pro-Display-Ultralight.otf +0 -0
- package/templates/next-template/public/themes/solid-dark-purple/theme.css +0 -9052
- package/templates/next-template/public/themes/solid-light-purple/fonts/SF-Pro-Display-Black.otf +0 -0
- package/templates/next-template/public/themes/solid-light-purple/fonts/SF-Pro-Display-Bold.otf +0 -0
- package/templates/next-template/public/themes/solid-light-purple/fonts/SF-Pro-Display-Heavy.otf +0 -0
- package/templates/next-template/public/themes/solid-light-purple/fonts/SF-Pro-Display-Light.otf +0 -0
- package/templates/next-template/public/themes/solid-light-purple/fonts/SF-Pro-Display-Medium.otf +0 -0
- package/templates/next-template/public/themes/solid-light-purple/fonts/SF-Pro-Display-Regular.otf +0 -0
- package/templates/next-template/public/themes/solid-light-purple/fonts/SF-Pro-Display-Semibold.otf +0 -0
- package/templates/next-template/public/themes/solid-light-purple/fonts/SF-Pro-Display-Thin.otf +0 -0
- package/templates/next-template/public/themes/solid-light-purple/fonts/SF-Pro-Display-Ultralight.otf +0 -0
- package/templates/next-template/public/themes/solid-light-purple/theme.css +0 -9084
package/helpers.js
CHANGED
|
@@ -154,6 +154,8 @@ export function getFrontendEnvJson(answers) {
|
|
|
154
154
|
NEXT_PUBLIC_SOLID_APP_DESCRIPTION: '',
|
|
155
155
|
NEXT_PUBLIC_ENABLE_CUSTOM_HEADER_FOOTER: false,
|
|
156
156
|
NEXT_PUBLIC_DEFAULT_MENU_KEY: `${answers.projectName}-tracker`,
|
|
157
|
+
NEXT_PUBLIC_SHOW_SETTINGS:false,
|
|
158
|
+
NEXT_PUBLIC_LOGIN_REDIRECT_URL:/admin/core/solid-core/user/list
|
|
157
159
|
}
|
|
158
160
|
};
|
|
159
161
|
return envConfig;
|
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.40",
|
|
31
31
|
"@types/luxon": "^3.4.2",
|
|
32
32
|
"amqplib": "^0.10.4",
|
|
33
33
|
"axios": "^1.7.0",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@nestjs/cli": "^10.0.0",
|
|
69
69
|
"@nestjs/testing": "^10.0.0",
|
|
70
|
-
"@solidstarters/solid-code-builder": "^1.0.
|
|
70
|
+
"@solidstarters/solid-code-builder": "^1.0.21",
|
|
71
71
|
"@types/express": "^4.17.17",
|
|
72
72
|
"@types/hapi__joi": "^17.1.12",
|
|
73
73
|
"@types/jest": "^29.5.2",
|
|
@@ -4424,9 +4424,9 @@
|
|
|
4424
4424
|
}
|
|
4425
4425
|
},
|
|
4426
4426
|
"node_modules/@solidstarters/solid-code-builder": {
|
|
4427
|
-
"version": "1.0.
|
|
4428
|
-
"resolved": "https://registry.npmjs.org/@solidstarters/solid-code-builder/-/solid-code-builder-1.0.
|
|
4429
|
-
"integrity": "sha512-
|
|
4427
|
+
"version": "1.0.21",
|
|
4428
|
+
"resolved": "https://registry.npmjs.org/@solidstarters/solid-code-builder/-/solid-code-builder-1.0.21.tgz",
|
|
4429
|
+
"integrity": "sha512-2A4+K/JDJD5EW8r1WQkAm41vJMlyAe+06WgvyPGbjMTZAwiLDudI5SwnivJrgKSghhOHeFulU/FDIrGjDvZP8A==",
|
|
4430
4430
|
"dev": true,
|
|
4431
4431
|
"license": "MIT",
|
|
4432
4432
|
"dependencies": {
|
|
@@ -4469,9 +4469,9 @@
|
|
|
4469
4469
|
}
|
|
4470
4470
|
},
|
|
4471
4471
|
"node_modules/@solidstarters/solid-core": {
|
|
4472
|
-
"version": "1.2.
|
|
4473
|
-
"resolved": "https://registry.npmjs.org/@solidstarters/solid-core/-/solid-core-1.2.
|
|
4474
|
-
"integrity": "sha512-
|
|
4472
|
+
"version": "1.2.40",
|
|
4473
|
+
"resolved": "https://registry.npmjs.org/@solidstarters/solid-core/-/solid-core-1.2.40.tgz",
|
|
4474
|
+
"integrity": "sha512-G/KyFrDE85jS7jKZqTL6lwzGLRSPzTCmV+KHIWECg9LudJJGNlKIBT0o4BrrtWoG+AQZWZ7qIZQBe74uSr1elw==",
|
|
4475
4475
|
"license": "ISC",
|
|
4476
4476
|
"dependencies": {
|
|
4477
4477
|
"@angular-devkit/core": "^18.0.3",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@nestjs/serve-static": "^4.0.2",
|
|
43
43
|
"@nestjs/swagger": "^7.2.0",
|
|
44
44
|
"@nestjs/typeorm": "^10.0.1",
|
|
45
|
-
"@solidstarters/solid-core": "^1.2.
|
|
45
|
+
"@solidstarters/solid-core": "^1.2.40",
|
|
46
46
|
"@types/luxon": "^3.4.2",
|
|
47
47
|
"amqplib": "^0.10.4",
|
|
48
48
|
"axios": "^1.7.0",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@nestjs/cli": "^10.0.0",
|
|
81
81
|
"@nestjs/testing": "^10.0.0",
|
|
82
|
-
"@solidstarters/solid-code-builder": "^1.0.
|
|
82
|
+
"@solidstarters/solid-code-builder": "^1.0.21",
|
|
83
83
|
"@types/express": "^4.17.17",
|
|
84
84
|
"@types/hapi__joi": "^17.1.12",
|
|
85
85
|
"@types/jest": "^29.5.2",
|
|
@@ -5,6 +5,10 @@ import { Toaster } from "react-hot-toast";
|
|
|
5
5
|
import { Provider } from "react-redux";
|
|
6
6
|
import { initializeStore } from "@/redux/store";
|
|
7
7
|
|
|
8
|
+
// Load all overrides.
|
|
9
|
+
// TODO: Putting this here as this seems to the most top level component used with "use client"
|
|
10
|
+
import "./solid-extensions";
|
|
11
|
+
|
|
8
12
|
export function GlobalProvider({ children, entities }: { children: React.ReactNode, entities: string[] }) {
|
|
9
13
|
const store = initializeStore(entities);
|
|
10
14
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { SolidModuleHome } from '@solidstarters/solid-core-ui';
|
|
2
|
+
|
|
1
3
|
export default function ModuleHome() {
|
|
2
4
|
return (
|
|
3
5
|
<div>
|
|
4
|
-
<
|
|
5
|
-
<p>Welcome to the module home page.</p>
|
|
6
|
+
<SolidModuleHome moduleName="Library Management" />
|
|
6
7
|
</div>
|
|
7
8
|
);
|
|
8
9
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
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
|
|
@@ -0,0 +1,132 @@
|
|
|
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
|
|
@@ -0,0 +1,21 @@
|
|
|
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;
|
|
@@ -0,0 +1,42 @@
|
|
|
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;
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import "
|
|
3
|
-
import
|
|
4
|
-
// import "primereact/resources/themes/lara-light-cyan/theme.css";
|
|
5
|
-
// import "primereact/resources/primereact.min.css";
|
|
6
|
-
import "primereact/resources/primereact.css";
|
|
1
|
+
import "@solidstarters/solid-core-ui/dist/resources/solid-primereact.css";
|
|
2
|
+
import "@solidstarters/solid-core-ui/dist/resources/globals.css";
|
|
3
|
+
import "@solidstarters/solid-core-ui/dist/resources/stylesheets/layout.scss"
|
|
7
4
|
import "primeicons/primeicons.css";
|
|
8
5
|
import "primeflex/primeflex.css";
|
|
9
|
-
import type { Metadata } from "next";
|
|
10
6
|
import { Inter } from "next/font/google";
|
|
11
7
|
import { GlobalProvider } from "./GlobalProvider";
|
|
12
8
|
import { PrimeReactProvider } from "primereact/api";
|
|
13
|
-
import { CustomHeader } from "@solidstarters/solid-core-ui";
|
|
14
|
-
import { CustomFooter } from "@solidstarters/solid-core-ui";
|
|
15
9
|
import { LayoutProvider } from "@solidstarters/solid-core-ui";
|
|
16
10
|
import { SolidThemeLink } from "@solidstarters/solid-core-ui";
|
|
17
11
|
|
|
@@ -21,12 +15,6 @@ const inter = Inter({
|
|
|
21
15
|
variable: '--font-inter',
|
|
22
16
|
});
|
|
23
17
|
|
|
24
|
-
// export const metadata: Metadata = {
|
|
25
|
-
// title: process.env.SOLID_APP_TITLE,
|
|
26
|
-
// description: process.env.SOLID_APP_DESCRIPTION,
|
|
27
|
-
// };
|
|
28
|
-
|
|
29
|
-
|
|
30
18
|
// Fetch a list of entities dynamically
|
|
31
19
|
async function fetchEntities() {
|
|
32
20
|
const url = `${process.env.NEXT_PUBLIC_BACKEND_API_URL}/api/model-metadata/public`;
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
|
|
7
|
+
// Registering a custom component
|
|
8
|
+
registerExtensionComponent("BookFormViewDynamicComponent", ImageGrid12Column);
|
|
9
|
+
registerExtensionComponent("BookSimilarTitles", BookSimilarTitles);
|
|
10
|
+
|
|
11
|
+
// Registering a custom function
|
|
12
|
+
registerExtensionFunction("bookFormViewChangeHandler", handleBookFormViewChange);
|
|
13
|
+
registerExtensionFunction("bookFormViewBlurHandler", handleBookFormViewBlur);
|