@postxl/generators 1.12.3 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend-ai/ai.generator.d.ts +18 -0
- package/dist/backend-ai/ai.generator.js +174 -0
- package/dist/backend-ai/ai.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-agent-service.generator.d.ts +4 -0
- package/dist/backend-ai/generators/ai-agent-service.generator.js +264 -0
- package/dist/backend-ai/generators/ai-agent-service.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-cache-service.generator.d.ts +1 -0
- package/dist/backend-ai/generators/ai-cache-service.generator.js +110 -0
- package/dist/backend-ai/generators/ai-cache-service.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-config.generator.d.ts +1 -0
- package/dist/backend-ai/generators/ai-config.generator.js +27 -0
- package/dist/backend-ai/generators/ai-config.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-module.generator.d.ts +2 -0
- package/dist/backend-ai/generators/ai-module.generator.js +89 -0
- package/dist/backend-ai/generators/ai-module.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-route.generator.d.ts +1 -0
- package/dist/backend-ai/generators/ai-route.generator.js +29 -0
- package/dist/backend-ai/generators/ai-route.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-tools-service.generator.d.ts +4 -0
- package/dist/backend-ai/generators/ai-tools-service.generator.js +222 -0
- package/dist/backend-ai/generators/ai-tools-service.generator.js.map +1 -0
- package/dist/backend-ai/generators/model-provider-interface.generator.d.ts +1 -0
- package/dist/backend-ai/generators/model-provider-interface.generator.js +48 -0
- package/dist/backend-ai/generators/model-provider-interface.generator.js.map +1 -0
- package/dist/backend-ai/generators/openai-model-provider-service.generator.d.ts +1 -0
- package/dist/backend-ai/generators/openai-model-provider-service.generator.js +128 -0
- package/dist/backend-ai/generators/openai-model-provider-service.generator.js.map +1 -0
- package/dist/backend-ai/index.d.ts +4 -0
- package/dist/backend-ai/index.js +40 -0
- package/dist/backend-ai/index.js.map +1 -0
- package/dist/backend-authentication/generators/authentication-service.generator.js +1 -1
- package/dist/backend-core/backend.generator.js +0 -4
- package/dist/backend-core/backend.generator.js.map +1 -1
- package/dist/backend-core/generators/main.generator.js +4 -3
- package/dist/backend-core/generators/main.generator.js.map +1 -1
- package/dist/backend-core/modules/backend-module-xlport.generator.js +1 -1
- package/dist/backend-e2e/backend-e2e.generator.js +4 -4
- package/dist/backend-e2e/backend-e2e.generator.js.map +1 -1
- package/dist/backend-excel-io/excel-io.generator.d.ts +19 -0
- package/dist/backend-excel-io/excel-io.generator.js +106 -0
- package/dist/backend-excel-io/excel-io.generator.js.map +1 -0
- package/dist/backend-excel-io/generators/excel-io-service.generator.d.ts +9 -0
- package/dist/backend-excel-io/generators/excel-io-service.generator.js +680 -0
- package/dist/backend-excel-io/generators/excel-io-service.generator.js.map +1 -0
- package/dist/backend-excel-io/index.d.ts +2 -0
- package/dist/backend-excel-io/index.js +22 -0
- package/dist/backend-excel-io/index.js.map +1 -0
- package/dist/backend-excel-io/template/README.md +24 -0
- package/dist/backend-excel-io/template/excel-io.controller.ts +195 -0
- package/dist/backend-excel-io/template/excel-io.module.ts +17 -0
- package/dist/backend-import/generators/detect-delta/detect-delta-functions.generator.js +149 -14
- package/dist/backend-import/generators/detect-delta/detect-delta-functions.generator.js.map +1 -1
- package/dist/backend-import/generators/filter-error-rows.generator.d.ts +2 -0
- package/dist/backend-import/generators/filter-error-rows.generator.js +28 -0
- package/dist/backend-import/generators/filter-error-rows.generator.js.map +1 -0
- package/dist/backend-import/generators/import-service.generator.js +126 -2
- package/dist/backend-import/generators/import-service.generator.js.map +1 -1
- package/dist/backend-import/import.generator.js +2 -0
- package/dist/backend-import/import.generator.js.map +1 -1
- package/dist/backend-repositories/generators/model-repository.generator.js +17 -2
- package/dist/backend-repositories/generators/model-repository.generator.js.map +1 -1
- package/dist/backend-router-trpc/generators/app-routes.generator.js +8 -1
- package/dist/backend-router-trpc/generators/app-routes.generator.js.map +1 -1
- package/dist/backend-router-trpc/generators/excel-io-route.generator.d.ts +4 -0
- package/dist/backend-router-trpc/generators/excel-io-route.generator.js +35 -0
- package/dist/backend-router-trpc/generators/excel-io-route.generator.js.map +1 -0
- package/dist/backend-router-trpc/generators/trpc-plugin.generator.js +9 -0
- package/dist/backend-router-trpc/generators/trpc-plugin.generator.js.map +1 -1
- package/dist/backend-router-trpc/generators/trpc-router-module.generator.js +9 -1
- package/dist/backend-router-trpc/generators/trpc-router-module.generator.js.map +1 -1
- package/dist/backend-router-trpc/generators/trpc-shared.generator.js +16 -1
- package/dist/backend-router-trpc/generators/trpc-shared.generator.js.map +1 -1
- package/dist/backend-router-trpc/router-trpc.generator.d.ts +3 -1
- package/dist/backend-router-trpc/router-trpc.generator.js +6 -0
- package/dist/backend-router-trpc/router-trpc.generator.js.map +1 -1
- package/dist/backend-seed/seed.generator.js +10 -1
- package/dist/backend-seed/seed.generator.js.map +1 -1
- package/dist/base/base.generator.js +0 -4
- package/dist/base/base.generator.js.map +1 -1
- package/dist/base/template/scripts/setup.sh +9 -4
- package/dist/base/template/sonar-project.properties +9 -1
- package/dist/decoders/datamodel-decoder.generator.js +91 -1
- package/dist/decoders/datamodel-decoder.generator.js.map +1 -1
- package/dist/decoders/decoders.generator.d.ts +9 -0
- package/dist/decoders/decoders.generator.js +15 -0
- package/dist/decoders/decoders.generator.js.map +1 -1
- package/dist/devops/devops.generator.d.ts +5 -1
- package/dist/devops/devops.generator.js +5 -4
- package/dist/devops/devops.generator.js.map +1 -1
- package/dist/devops/generators/bitbucket-pipelines-yml.generator.js +1 -0
- package/dist/devops/generators/bitbucket-pipelines-yml.generator.js.map +1 -1
- package/dist/devops/generators/docker-compose-yml.generator.d.ts +1 -1
- package/dist/devops/generators/docker-compose-yml.generator.js +16 -1
- package/dist/devops/generators/docker-compose-yml.generator.js.map +1 -1
- package/dist/devops/generators/e2e-yml.generator.js +35 -10
- package/dist/devops/generators/e2e-yml.generator.js.map +1 -1
- package/dist/devops/generators/jenkinsfile.generator.js +25 -1
- package/dist/devops/generators/jenkinsfile.generator.js.map +1 -1
- package/dist/e2e/template/e2e/specs/example.spec.ts-snapshots/Navigate-to-homepage-and-take-snapshot-1-chromium-linux.png +0 -0
- package/dist/frontend-actions/actions.generator.d.ts +9 -0
- package/dist/frontend-actions/actions.generator.js +111 -0
- package/dist/frontend-actions/actions.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-action-text.utils.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-action-text.utils.generator.js +52 -0
- package/dist/frontend-actions/generators/ai-action-text.utils.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-assistant-store.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-assistant-store.generator.js +230 -0
- package/dist/frontend-actions/generators/ai-assistant-store.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-sidebar-content.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-sidebar-content.generator.js +139 -0
- package/dist/frontend-actions/generators/ai-sidebar-content.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-sidepane.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-sidepane.generator.js +98 -0
- package/dist/frontend-actions/generators/ai-sidepane.generator.js.map +1 -0
- package/dist/frontend-actions/generators/base-global-actions.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/base-global-actions.generator.js +405 -0
- package/dist/frontend-actions/generators/base-global-actions.generator.js.map +1 -0
- package/dist/frontend-actions/generators/command-palette-action.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/command-palette-action.generator.js +87 -0
- package/dist/frontend-actions/generators/command-palette-action.generator.js.map +1 -0
- package/dist/frontend-actions/generators/command-palette-store.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/command-palette-store.generator.js +288 -0
- package/dist/frontend-actions/generators/command-palette-store.generator.js.map +1 -0
- package/dist/frontend-actions/generators/command-palette.generator.d.ts +5 -0
- package/dist/frontend-actions/generators/command-palette.generator.js +332 -0
- package/dist/frontend-actions/generators/command-palette.generator.js.map +1 -0
- package/dist/frontend-actions/generators/filter-utils.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/filter-utils.generator.js +50 -0
- package/dist/frontend-actions/generators/filter-utils.generator.js.map +1 -0
- package/dist/frontend-actions/generators/sidepanel-toggle.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/sidepanel-toggle.generator.js +37 -0
- package/dist/frontend-actions/generators/sidepanel-toggle.generator.js.map +1 -0
- package/dist/frontend-actions/index.d.ts +4 -0
- package/dist/frontend-actions/index.js +40 -0
- package/dist/frontend-actions/index.js.map +1 -0
- package/dist/frontend-admin/admin.generator.d.ts +5 -1
- package/dist/frontend-admin/admin.generator.js +36 -1
- package/dist/frontend-admin/admin.generator.js.map +1 -1
- package/dist/frontend-admin/generators/admin-global-actions.generator.d.ts +4 -0
- package/dist/frontend-admin/generators/admin-global-actions.generator.js +230 -0
- package/dist/frontend-admin/generators/admin-global-actions.generator.js.map +1 -0
- package/dist/frontend-admin/generators/admin-overview-page.generator.js +21 -1
- package/dist/frontend-admin/generators/admin-overview-page.generator.js.map +1 -1
- package/dist/frontend-admin/generators/admin-sidebar.generator.js +20 -0
- package/dist/frontend-admin/generators/admin-sidebar.generator.js.map +1 -1
- package/dist/frontend-admin/generators/detail-sidebar.generator.js +44 -32
- package/dist/frontend-admin/generators/detail-sidebar.generator.js.map +1 -1
- package/dist/frontend-admin/generators/excel-io-page.generator.d.ts +4 -0
- package/dist/frontend-admin/generators/excel-io-page.generator.js +258 -0
- package/dist/frontend-admin/generators/excel-io-page.generator.js.map +1 -0
- package/dist/frontend-admin/generators/import-review-page-result-stage.generator.d.ts +1 -0
- package/dist/frontend-admin/generators/import-review-page-result-stage.generator.js +104 -0
- package/dist/frontend-admin/generators/import-review-page-result-stage.generator.js.map +1 -0
- package/dist/frontend-admin/generators/import-review-page-review-stage.generator.d.ts +1 -0
- package/dist/frontend-admin/generators/import-review-page-review-stage.generator.js +1031 -0
- package/dist/frontend-admin/generators/import-review-page-review-stage.generator.js.map +1 -0
- package/dist/frontend-admin/generators/import-review-page-upload-stage.generator.d.ts +1 -0
- package/dist/frontend-admin/generators/import-review-page-upload-stage.generator.js +77 -0
- package/dist/frontend-admin/generators/import-review-page-upload-stage.generator.js.map +1 -0
- package/dist/frontend-admin/generators/import-review-page.generator.d.ts +7 -0
- package/dist/frontend-admin/generators/import-review-page.generator.js +180 -0
- package/dist/frontend-admin/generators/import-review-page.generator.js.map +1 -0
- package/dist/frontend-admin/generators/model-admin-page.generator.js +198 -60
- package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -1
- package/dist/frontend-admin/utils.d.ts +1 -0
- package/dist/frontend-admin/utils.js +26 -33
- package/dist/frontend-admin/utils.js.map +1 -1
- package/dist/frontend-core/frontend.generator.js +1 -2
- package/dist/frontend-core/frontend.generator.js.map +1 -1
- package/dist/frontend-core/generators/tsconfig.generator.js +1 -0
- package/dist/frontend-core/generators/tsconfig.generator.js.map +1 -1
- package/dist/frontend-core/template/.env.example +3 -0
- package/dist/frontend-core/template/src/components/admin/excel-io-actions.tsx +64 -0
- package/dist/frontend-core/template/src/components/admin/table-view-panel.tsx +41 -3
- package/dist/frontend-core/template/src/components/ui/color-mode-toggle/color-mode-toggle.tsx +1 -1
- package/dist/frontend-core/template/src/hooks/use-excel-io.ts +137 -0
- package/dist/frontend-core/template/src/hooks/use-import-review.ts +143 -0
- package/dist/frontend-core/template/src/lib/color.ts +6 -3
- package/dist/frontend-core/template/src/lib/config.ts +3 -1
- package/dist/frontend-core/template/src/lib/excel-download.ts +28 -0
- package/dist/frontend-core/types/hook.d.ts +1 -1
- package/dist/frontend-tables/generators/model-table.generator.js +21 -13
- package/dist/frontend-tables/generators/model-table.generator.js.map +1 -1
- package/dist/generators.js +6 -0
- package/dist/generators.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/seed-data/seed-data.generator.d.ts +3 -0
- package/dist/seed-data/seed-data.generator.js +45 -1
- package/dist/seed-data/seed-data.generator.js.map +1 -1
- package/dist/types/template/ai.types.ts +34 -0
- package/dist/types/types.generator.js +1 -0
- package/dist/types/types.generator.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-admin-page.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/model-admin-page.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,
|
|
1
|
+
{"version":3,"file":"model-admin-page.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/model-admin-page.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,7 @@ function groupAndSortModelsBySchema(context) {
|
|
|
55
55
|
name: model.name,
|
|
56
56
|
route: model.admin.page.route,
|
|
57
57
|
userFriendlyName: model.userFriendlyName,
|
|
58
|
+
isReadonly: model.isReadonly,
|
|
58
59
|
});
|
|
59
60
|
}
|
|
60
61
|
// Sort schemas alphabetically
|
|
@@ -77,14 +78,16 @@ function generatePage({ page, paths, vfs, content, }) {
|
|
|
77
78
|
vfs.write((0, node_path_1.join)(paths.routes, `${page.route}.lazy.tsx`), generateOutlet(page));
|
|
78
79
|
return;
|
|
79
80
|
}
|
|
80
|
-
// Model admin pages with keyField routing
|
|
81
|
+
// Model admin pages with keyField routing render the page in the layout route
|
|
82
|
+
// with useMatch to optionally read the $key param. This prevents re-mounting
|
|
83
|
+
// the page component when navigating between /admin/{model} and /admin/{model}/$key.
|
|
81
84
|
if (page.hasKeyFieldRouting) {
|
|
82
|
-
// Generate
|
|
83
|
-
vfs.write((0, node_path_1.join)(paths.routes, `${page.route}.
|
|
84
|
-
// Generate index route at /admin/{model}/ (
|
|
85
|
-
vfs.write(
|
|
86
|
-
// Generate $key route at /admin/{model}/$key
|
|
87
|
-
vfs.write(
|
|
85
|
+
// Generate layout route at /admin/{model} - renders page directly with useMatch
|
|
86
|
+
vfs.write((0, node_path_1.join)(paths.routes, `${page.route}.tsx`), generateKeyFieldLayoutRoute(page));
|
|
87
|
+
// Generate index route at /admin/{model}/ (renders null, layout handles rendering)
|
|
88
|
+
// vfs.write(join(paths.routes, `${page.route}/index.lazy.tsx`), generateKeyFieldChildRoute(page))
|
|
89
|
+
// Generate $key route at /admin/{model}/$key (renders null, layout handles rendering)
|
|
90
|
+
// vfs.write(join(paths.routes, `${page.route}/$key.lazy.tsx`), generateKeyFieldChildRoute(page, '/$key'))
|
|
88
91
|
for (const alias of page.aliases ?? []) {
|
|
89
92
|
vfs.write((0, node_path_1.join)(paths.routes, `${alias}.tsx`), generateAliasRoute({ alias, page }));
|
|
90
93
|
}
|
|
@@ -133,38 +136,28 @@ export const Route = createFileRoute('${joinRoutes('_auth-routes', alias)}')({
|
|
|
133
136
|
})`;
|
|
134
137
|
}
|
|
135
138
|
/**
|
|
136
|
-
* Generate the
|
|
137
|
-
*
|
|
139
|
+
* Generate the layout route for keyField routing.
|
|
140
|
+
* Renders the page component directly at the layout level with useMatch
|
|
141
|
+
* to optionally read the $key param from the child route.
|
|
142
|
+
* This prevents re-mounting the page when navigating between index and $key routes.
|
|
138
143
|
*/
|
|
139
|
-
function
|
|
144
|
+
function generateKeyFieldLayoutRoute({ pageComponent, route }) {
|
|
140
145
|
if (!route.startsWith('/')) {
|
|
141
146
|
throw new Error(`Route for page ${pageComponent.name} must start with '/': ${route}!`);
|
|
142
147
|
}
|
|
143
148
|
return `import ${pageComponent.name} from '${pageComponent.location}'
|
|
144
|
-
import {
|
|
149
|
+
import { createFileRoute } from '@tanstack/react-router'
|
|
150
|
+
import { z } from 'zod'
|
|
145
151
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Generate the $key param route for keyField routing (with key selected)
|
|
152
|
-
* This renders the page component with selectedKey from URL params
|
|
153
|
-
*/
|
|
154
|
-
function generateKeyFieldParamRoute({ pageComponent, route }) {
|
|
155
|
-
if (!route.startsWith('/')) {
|
|
156
|
-
throw new Error(`Route for page ${pageComponent.name} must start with '/': ${route}!`);
|
|
157
|
-
}
|
|
158
|
-
return `import ${pageComponent.name} from '${pageComponent.location}'
|
|
159
|
-
import { createLazyFileRoute } from '@tanstack/react-router'
|
|
152
|
+
const zSearchParams = z.object({
|
|
153
|
+
selectedKey: z.string().optional(),
|
|
154
|
+
focusedCell: z.string().optional(),
|
|
155
|
+
})
|
|
160
156
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
export const Route = createLazyFileRoute('${joinRoutes('_auth-routes', route)}/$key')({
|
|
167
|
-
component: ${pageComponent.name}WithKey,
|
|
168
|
-
})`;
|
|
157
|
+
export const Route = createFileRoute('${joinRoutes('_auth-routes', route)}')({
|
|
158
|
+
component: ${pageComponent.name},
|
|
159
|
+
validateSearch: zSearchParams,
|
|
160
|
+
})
|
|
161
|
+
`;
|
|
169
162
|
}
|
|
170
163
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/frontend-admin/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/frontend-admin/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ const ROOT_ROUTE_FILENAME = '__root.tsx';
|
|
|
42
42
|
// CONTEXT REGISTRATION --------------------------------------------------------
|
|
43
43
|
exports.base = {
|
|
44
44
|
components: ['color-mode-toggle'],
|
|
45
|
-
hooks: ['useFontsLoaded.ts', 'use-table-view-config.tsx'],
|
|
45
|
+
hooks: ['useFontsLoaded.ts', 'use-table-view-config.tsx', 'use-excel-io.ts', 'use-import-review.ts'],
|
|
46
46
|
contextProviders: ['auth-context-provider.tsx', 'theme-context-provider.tsx'],
|
|
47
47
|
packageJson: {
|
|
48
48
|
// We set name and description with the context's slug in the register function as we do not have access to the schema here yet
|
|
@@ -245,7 +245,6 @@ const configureFrontendGenerator = (into) => ({
|
|
|
245
245
|
await context.vfs.loadFile(copyToRelativeLocation(`src/context-providers/${contextProvider}`));
|
|
246
246
|
}
|
|
247
247
|
context.vfs.write(Path.join(target, 'tsconfig.json'), (0, tsconfig_generator_1.generateTsConfig)(context));
|
|
248
|
-
context.vfs.write(Path.join(target, '.env'), context.vfs.get(Path.join(target, '.env.example')) ?? '');
|
|
249
248
|
return context;
|
|
250
249
|
},
|
|
251
250
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend.generator.js","sourceRoot":"","sources":["../../src/frontend-core/frontend.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAiC;AAEjC,6DAA8C;AAC9C,iDAAiH;AAKjH,wEAAkE;AAGlE,MAAM,mBAAmB,GAAG,YAAY,CAAA;AAIxC,gFAAgF;AAEnE,QAAA,IAAI,GAAyB;IACxC,UAAU,EAAE,CAAC,mBAAmB,CAAC;IACjC,KAAK,EAAE,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"frontend.generator.js","sourceRoot":"","sources":["../../src/frontend-core/frontend.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ const generator_1 = require("@postxl/generator");
|
|
|
5
5
|
function generateTsConfig({ frontend: { tsConfigReferences } }) {
|
|
6
6
|
const paths = [
|
|
7
7
|
'"@assets/*": ["assets/*"]',
|
|
8
|
+
'"@app-actions/*": ["actions/*"]',
|
|
8
9
|
'"@components/*": ["components/*"]',
|
|
9
10
|
'"@context-providers/*": ["context-providers/*"]',
|
|
10
11
|
'"@hooks/*": ["hooks/*"]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsconfig.generator.js","sourceRoot":"","sources":["../../../src/frontend-core/generators/tsconfig.generator.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"tsconfig.generator.js","sourceRoot":"","sources":["../../../src/frontend-core/generators/tsconfig.generator.ts"],"names":[],"mappings":";;AAIA,4CAuDC;AA3DD,iDAAmD;AAInD,SAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,EAAE,EAAgB;IACjF,MAAM,KAAK,GAAa;QACtB,2BAA2B;QAC3B,iCAAiC;QACjC,mCAAmC;QACnC,iDAAiD;QACjD,yBAAyB;QACzB,uBAAuB;QACvB,qBAAqB;QACrB,yBAAyB;QACzB,8BAA8B;QAC9B,2BAA2B;QAC3B,2BAA2B;KAC5B,CAAA;IAED,KAAK,MAAM,SAAS,IAAI,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU;YACvC,CAAC,CAAC,SAAS,CAAC,QAAQ;YACpB,CAAC,CAAC,IAAA,2BAAe,EAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;QAExE,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,UAAU,YAAY,MAAM,CAAC,CAAA;QAC3D,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,QAAQ,YAAY,IAAI,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;QAsBV,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;EAM9D,CAAA;AACF,CAAC"}
|
|
@@ -22,6 +22,9 @@ VITE_PUBLIC_ANALYTICS_SCRIPT_URL=https://assets.adobedtm.com/3d4679b20136/041ff0
|
|
|
22
22
|
# Enable tanstack dev tools (for dev mode enabled by default)
|
|
23
23
|
#VITE_ENABLE_DEV_TOOLS=true
|
|
24
24
|
|
|
25
|
+
# Enable or disable AI assistant features in the frontend
|
|
26
|
+
VITE_PUBLIC_ENABLE_AI=true
|
|
27
|
+
|
|
25
28
|
#################################################################################
|
|
26
29
|
### Auth module settings
|
|
27
30
|
#################################################################################
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Download, Upload } from 'lucide-react'
|
|
2
|
+
|
|
3
|
+
import { type ExcelSortState, useExcelIo } from '@hooks/use-excel-io'
|
|
4
|
+
import { Button } from '@postxl/ui-components'
|
|
5
|
+
|
|
6
|
+
export type ExcelIoActionsProps = Readonly<{
|
|
7
|
+
model?: string
|
|
8
|
+
filters?: Record<string, unknown>
|
|
9
|
+
sort?: ExcelSortState
|
|
10
|
+
onImportSuccess?: () => void
|
|
11
|
+
}>
|
|
12
|
+
|
|
13
|
+
export function ExcelIoActions({ model, filters, sort, onImportSuccess }: ExcelIoActionsProps) {
|
|
14
|
+
const { isExportingExcel, isImportingExcel, importInputRef, handleExportExcel, handleImportExcel, openImportDialog } =
|
|
15
|
+
useExcelIo({
|
|
16
|
+
model,
|
|
17
|
+
filters,
|
|
18
|
+
sort,
|
|
19
|
+
onImportSuccess,
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
if (!model) {
|
|
23
|
+
return null
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<>
|
|
28
|
+
<Button
|
|
29
|
+
type="button"
|
|
30
|
+
variant="outline"
|
|
31
|
+
size="icon"
|
|
32
|
+
className="h-8 w-8"
|
|
33
|
+
onClick={() => {
|
|
34
|
+
void handleExportExcel()
|
|
35
|
+
}}
|
|
36
|
+
disabled={isExportingExcel}
|
|
37
|
+
title="Export filtered and sorted rows to Excel"
|
|
38
|
+
>
|
|
39
|
+
<Download className="h-4 w-4" />
|
|
40
|
+
</Button>
|
|
41
|
+
<input
|
|
42
|
+
ref={importInputRef}
|
|
43
|
+
type="file"
|
|
44
|
+
accept=".xlsx,.xls"
|
|
45
|
+
className="hidden"
|
|
46
|
+
onChange={(event) => {
|
|
47
|
+
const file = event.target.files?.[0] ?? null
|
|
48
|
+
void handleImportExcel(file)
|
|
49
|
+
}}
|
|
50
|
+
/>
|
|
51
|
+
<Button
|
|
52
|
+
type="button"
|
|
53
|
+
variant="outline"
|
|
54
|
+
size="icon"
|
|
55
|
+
className="h-8 w-8"
|
|
56
|
+
onClick={openImportDialog}
|
|
57
|
+
disabled={isImportingExcel}
|
|
58
|
+
title="Import Excel file"
|
|
59
|
+
>
|
|
60
|
+
<Upload className="h-4 w-4" />
|
|
61
|
+
</Button>
|
|
62
|
+
</>
|
|
63
|
+
)
|
|
64
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Table } from '@tanstack/react-table'
|
|
2
2
|
|
|
3
|
-
import { useCallback, useEffect, useRef } from 'react'
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef } from 'react'
|
|
4
4
|
import { toast } from 'sonner'
|
|
5
5
|
|
|
6
6
|
import { type TableViewState, useTableViewConfig } from '@hooks/use-table-view-config'
|
|
@@ -36,6 +36,7 @@ export type TableViewPanelProps<TData> = {
|
|
|
36
36
|
* - Applying loaded views back to the table and page filter/sort state
|
|
37
37
|
* - Auto-restoring the previously active view on mount
|
|
38
38
|
* - Rename and delete operations
|
|
39
|
+
* - Deselecting the active view when the user changes any tracked state
|
|
39
40
|
*/
|
|
40
41
|
export function TableViewPanel<TData>({
|
|
41
42
|
model,
|
|
@@ -50,6 +51,15 @@ export function TableViewPanel<TData>({
|
|
|
50
51
|
}: TableViewPanelProps<TData>) {
|
|
51
52
|
const viewConfig = useTableViewConfig({ model, currentUserId })
|
|
52
53
|
const hasAutoAppliedRef = useRef(false)
|
|
54
|
+
// 'pending' = view just applied, waiting for state to settle before capturing baseline
|
|
55
|
+
const appliedStateRef = useRef<string | null>(null)
|
|
56
|
+
|
|
57
|
+
// Track current state of all view-stored properties for change detection
|
|
58
|
+
const { columnVisibility, columnOrder, columnPinning, columnSizing } = table.getState()
|
|
59
|
+
const currentStateKey = useMemo(
|
|
60
|
+
() => JSON.stringify({ filters, sort, columnVisibility, columnOrder, columnPinning, columnSizing }),
|
|
61
|
+
[filters, sort, columnVisibility, columnOrder, columnPinning, columnSizing],
|
|
62
|
+
)
|
|
53
63
|
|
|
54
64
|
const applyViewState = useCallback(
|
|
55
65
|
(viewId: string) => {
|
|
@@ -58,6 +68,8 @@ export function TableViewPanel<TData>({
|
|
|
58
68
|
return
|
|
59
69
|
}
|
|
60
70
|
const state = viewConfig.parseViewState(view)
|
|
71
|
+
appliedStateRef.current = 'pending'
|
|
72
|
+
|
|
61
73
|
if (onFiltersChange) {
|
|
62
74
|
onFiltersChange(state.filters ?? {})
|
|
63
75
|
}
|
|
@@ -92,6 +104,26 @@ export function TableViewPanel<TData>({
|
|
|
92
104
|
}
|
|
93
105
|
}, [viewConfig.isLoaded, viewConfig.activeViewId, viewConfig.views, applyViewState])
|
|
94
106
|
|
|
107
|
+
// Deselect active view when any stored state property drifts from the applied view.
|
|
108
|
+
// Debounced: each state change resets the timer, so transient changes from table
|
|
109
|
+
// auto-sizing or batched React updates don't trigger false positives.
|
|
110
|
+
const { activeViewId, clearActiveView } = viewConfig
|
|
111
|
+
useEffect(() => {
|
|
112
|
+
if (!activeViewId || !appliedStateRef.current) {
|
|
113
|
+
return
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const timer = setTimeout(() => {
|
|
117
|
+
if (appliedStateRef.current === 'pending') {
|
|
118
|
+
appliedStateRef.current = currentStateKey
|
|
119
|
+
} else if (currentStateKey !== appliedStateRef.current) {
|
|
120
|
+
clearActiveView()
|
|
121
|
+
appliedStateRef.current = null
|
|
122
|
+
}
|
|
123
|
+
}, 300)
|
|
124
|
+
return () => clearTimeout(timer)
|
|
125
|
+
}, [currentStateKey, activeViewId, clearActiveView])
|
|
126
|
+
|
|
95
127
|
const collectTableState = useCallback(
|
|
96
128
|
(): TableViewState => ({
|
|
97
129
|
filters: filters,
|
|
@@ -106,20 +138,25 @@ export function TableViewPanel<TData>({
|
|
|
106
138
|
|
|
107
139
|
const handleSaveView = useCallback(
|
|
108
140
|
({ name, isGlobal }: { name: string; isGlobal: boolean }) => {
|
|
141
|
+
// Snapshot current state — saving makes the current state match the view
|
|
142
|
+
appliedStateRef.current = currentStateKey
|
|
109
143
|
void viewConfig.saveView({ name, isGlobal, state: collectTableState() }).then((view) => {
|
|
110
144
|
toast.success(`View "${view.name}" saved`)
|
|
111
145
|
})
|
|
112
146
|
},
|
|
113
|
-
[viewConfig, collectTableState],
|
|
147
|
+
[viewConfig, collectTableState, currentStateKey],
|
|
114
148
|
)
|
|
115
149
|
|
|
116
150
|
const handleUpdateView = useCallback(
|
|
117
151
|
(viewId: string) => {
|
|
152
|
+
// Snapshot current state — updating makes the current state match the view
|
|
153
|
+
appliedStateRef.current = currentStateKey
|
|
118
154
|
void viewConfig.updateView(viewId, collectTableState()).then(() => {
|
|
155
|
+
viewConfig.setActiveViewId(viewId)
|
|
119
156
|
toast.success('View updated')
|
|
120
157
|
})
|
|
121
158
|
},
|
|
122
|
-
[viewConfig, collectTableState],
|
|
159
|
+
[viewConfig, collectTableState, currentStateKey],
|
|
123
160
|
)
|
|
124
161
|
|
|
125
162
|
const handleApplyView = useCallback(
|
|
@@ -140,6 +177,7 @@ export function TableViewPanel<TData>({
|
|
|
140
177
|
)
|
|
141
178
|
|
|
142
179
|
const handleClearView = useCallback(() => {
|
|
180
|
+
appliedStateRef.current = null
|
|
143
181
|
viewConfig.clearActiveView()
|
|
144
182
|
onClearView?.()
|
|
145
183
|
if (onFiltersChange) {
|
package/dist/frontend-core/template/src/components/ui/color-mode-toggle/color-mode-toggle.tsx
CHANGED
|
@@ -88,7 +88,7 @@ export const ColorModeToggle = ({
|
|
|
88
88
|
variant="ghost"
|
|
89
89
|
size="icon"
|
|
90
90
|
onClick={toggleColorMode}
|
|
91
|
-
className="size-8 rounded-full bg-accent"
|
|
91
|
+
className="mr-12 size-8 rounded-full bg-accent"
|
|
92
92
|
__e2e_test_id__={__e2e_test_id__}
|
|
93
93
|
>
|
|
94
94
|
<SunIcon className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { getAuthHeaders } from '@context-providers/auth-context-provider'
|
|
2
|
+
|
|
3
|
+
import { type RefObject, useCallback, useRef, useState } from 'react'
|
|
4
|
+
import { toast } from 'sonner'
|
|
5
|
+
|
|
6
|
+
import { APP_CONFIG } from '@lib/config'
|
|
7
|
+
import { downloadBlob, getFilenameFromContentDisposition } from '@lib/excel-download'
|
|
8
|
+
|
|
9
|
+
export type ExcelSortState = { field: string; direction: 'asc' | 'desc' }[]
|
|
10
|
+
|
|
11
|
+
export type UseExcelIoOptions = {
|
|
12
|
+
model?: string
|
|
13
|
+
filters?: Record<string, unknown>
|
|
14
|
+
sort?: ExcelSortState
|
|
15
|
+
onImportSuccess?: () => void
|
|
16
|
+
showToasts?: boolean
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type UseExcelIoResult = {
|
|
20
|
+
isExportingExcel: boolean
|
|
21
|
+
isImportingExcel: boolean
|
|
22
|
+
importInputRef: RefObject<HTMLInputElement | null>
|
|
23
|
+
handleExportExcel: (args?: {
|
|
24
|
+
model?: string
|
|
25
|
+
filters?: Record<string, unknown>
|
|
26
|
+
sort?: ExcelSortState
|
|
27
|
+
}) => Promise<void>
|
|
28
|
+
handleImportExcel: (file: File | null) => Promise<void>
|
|
29
|
+
openImportDialog: () => void
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function useExcelIo(options: UseExcelIoOptions): UseExcelIoResult {
|
|
33
|
+
const { model, filters, sort, onImportSuccess, showToasts = true } = options
|
|
34
|
+
const [isExportingExcel, setIsExportingExcel] = useState(false)
|
|
35
|
+
const [isImportingExcel, setIsImportingExcel] = useState(false)
|
|
36
|
+
const importInputRef = useRef<HTMLInputElement | null>(null)
|
|
37
|
+
|
|
38
|
+
const handleExportExcel = useCallback(
|
|
39
|
+
async (args?: { model?: string; filters?: Record<string, unknown>; sort?: ExcelSortState }) => {
|
|
40
|
+
const targetModel = args?.model ?? model
|
|
41
|
+
const targetFilters = args?.filters ?? filters
|
|
42
|
+
const targetSort = args?.sort ?? sort
|
|
43
|
+
|
|
44
|
+
setIsExportingExcel(true)
|
|
45
|
+
try {
|
|
46
|
+
const params = new URLSearchParams()
|
|
47
|
+
if (Object.keys(targetFilters ?? {}).length > 0) {
|
|
48
|
+
params.set('filters', JSON.stringify(targetFilters))
|
|
49
|
+
}
|
|
50
|
+
if (targetSort && targetSort.length > 0) {
|
|
51
|
+
params.set('sort', JSON.stringify(targetSort))
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const query = params.toString()
|
|
55
|
+
const path = targetModel ? `export/${targetModel}` : 'export/all'
|
|
56
|
+
const endpoint = `${APP_CONFIG.apiURL}/excel-io/${path}${query ? `?${query}` : ''}`
|
|
57
|
+
const response = await fetch(endpoint, {
|
|
58
|
+
headers: getAuthHeaders(),
|
|
59
|
+
credentials: 'include',
|
|
60
|
+
})
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
throw new Error(await response.text())
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const blob = await response.blob()
|
|
66
|
+
const filename = getFilenameFromContentDisposition(
|
|
67
|
+
response.headers.get('Content-Disposition'),
|
|
68
|
+
targetModel ? `${targetModel}.xlsx` : 'all-models.xlsx',
|
|
69
|
+
)
|
|
70
|
+
downloadBlob(blob, filename)
|
|
71
|
+
if (showToasts) {
|
|
72
|
+
toast.success('Excel export completed')
|
|
73
|
+
}
|
|
74
|
+
} catch (error) {
|
|
75
|
+
if (showToasts) {
|
|
76
|
+
toast.error(`Excel export failed: ${String(error)}`)
|
|
77
|
+
}
|
|
78
|
+
} finally {
|
|
79
|
+
setIsExportingExcel(false)
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
[filters, model, showToasts, sort],
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
const handleImportExcel = useCallback(
|
|
86
|
+
async (file: File | null) => {
|
|
87
|
+
if (!file) {
|
|
88
|
+
return
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
setIsImportingExcel(true)
|
|
92
|
+
try {
|
|
93
|
+
const formData = new FormData()
|
|
94
|
+
formData.append('file', file)
|
|
95
|
+
|
|
96
|
+
const response = await fetch(`${APP_CONFIG.apiURL}/excel-io/import`, {
|
|
97
|
+
method: 'POST',
|
|
98
|
+
body: formData,
|
|
99
|
+
headers: getAuthHeaders(),
|
|
100
|
+
credentials: 'include',
|
|
101
|
+
})
|
|
102
|
+
const payload = await response.json().catch(() => undefined)
|
|
103
|
+
if (!response.ok || payload?.success !== true) {
|
|
104
|
+
throw new Error(payload?.error ?? 'Import failed')
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (showToasts) {
|
|
108
|
+
toast.success('Excel import completed')
|
|
109
|
+
}
|
|
110
|
+
onImportSuccess?.()
|
|
111
|
+
} catch (error) {
|
|
112
|
+
if (showToasts) {
|
|
113
|
+
toast.error(`Excel import failed: ${String(error)}`)
|
|
114
|
+
}
|
|
115
|
+
} finally {
|
|
116
|
+
setIsImportingExcel(false)
|
|
117
|
+
if (importInputRef.current) {
|
|
118
|
+
importInputRef.current.value = ''
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
[onImportSuccess, showToasts],
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
const openImportDialog = useCallback(() => {
|
|
126
|
+
importInputRef.current?.click()
|
|
127
|
+
}, [])
|
|
128
|
+
|
|
129
|
+
return {
|
|
130
|
+
isExportingExcel,
|
|
131
|
+
isImportingExcel,
|
|
132
|
+
importInputRef,
|
|
133
|
+
handleExportExcel,
|
|
134
|
+
handleImportExcel,
|
|
135
|
+
openImportDialog,
|
|
136
|
+
}
|
|
137
|
+
}
|