@svadmin/ui 0.32.5 → 0.32.7
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.
|
@@ -13,17 +13,6 @@
|
|
|
13
13
|
import AutoTable from './AutoTable.svelte';
|
|
14
14
|
import AutoForm from './AutoForm.svelte';
|
|
15
15
|
import ShowPage from './ShowPage.svelte';
|
|
16
|
-
|
|
17
|
-
// Module-level QueryClient — survives component remounts (SPA only)
|
|
18
|
-
let _queryClient: QueryClient | null = null;
|
|
19
|
-
function getOrCreateQueryClient(): QueryClient {
|
|
20
|
-
if (!_queryClient) {
|
|
21
|
-
_queryClient = new QueryClient({
|
|
22
|
-
defaultOptions: { queries: { staleTime: 30_000, retry: 1 } },
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
return _queryClient;
|
|
26
|
-
}
|
|
27
16
|
import Toast from './Toast.svelte';
|
|
28
17
|
import LoginPage from './LoginPage.svelte';
|
|
29
18
|
import RegisterPage from './RegisterPage.svelte';
|
|
@@ -51,7 +40,7 @@
|
|
|
51
40
|
/** Theme configuration for dark-first mode, CSS overrides, etc. */
|
|
52
41
|
themeConfig?: ThemeConfig;
|
|
53
42
|
dashboard?: Snippet;
|
|
54
|
-
loginPage?: Snippet
|
|
43
|
+
loginPage?: Snippet;
|
|
55
44
|
/** Override default components via DI */
|
|
56
45
|
components?: Partial<ComponentRegistry>;
|
|
57
46
|
/** Custom multi-level menu configuration */
|
|
@@ -89,16 +78,28 @@
|
|
|
89
78
|
Skeleton: Skeleton as unknown as ComponentRegistry['Skeleton'],
|
|
90
79
|
};
|
|
91
80
|
|
|
92
|
-
|
|
81
|
+
// Merge user overrides and set context
|
|
82
|
+
$effect(() => {
|
|
83
|
+
setComponentRegistry({ ...defaultComponents, ...userComponents });
|
|
84
|
+
});
|
|
93
85
|
|
|
94
|
-
|
|
95
|
-
const resolvedRouter = $derived(routerProvider ??
|
|
86
|
+
// Resolve router provider (default to hash)
|
|
87
|
+
const resolvedRouter = $derived(routerProvider ?? createHashRouterProvider());
|
|
96
88
|
const resolvedRouteMode = $derived(routeMode ?? (routerProvider ? 'auto' : 'hash'));
|
|
97
89
|
|
|
98
|
-
// Set up context
|
|
90
|
+
// Set up initial context synchronously so children can access resources immediately during first render
|
|
91
|
+
setDataProvider(dataProvider);
|
|
92
|
+
if (authProvider) setAuthProvider(authProvider);
|
|
93
|
+
setResources(resources);
|
|
94
|
+
setRouterProvider(resolvedRouter);
|
|
95
|
+
if (locale) setLocale(locale);
|
|
96
|
+
if (userThemeConfig) configureTheme(userThemeConfig);
|
|
97
|
+
if (defaultTheme) setTheme(defaultTheme);
|
|
98
|
+
|
|
99
|
+
// Set up context — use $effect so prop changes are tracked
|
|
99
100
|
$effect.pre(() => {
|
|
100
101
|
setDataProvider(dataProvider);
|
|
101
|
-
setAuthProvider(authProvider);
|
|
102
|
+
if (authProvider) setAuthProvider(authProvider);
|
|
102
103
|
setResources(resources);
|
|
103
104
|
setRouterProvider(resolvedRouter);
|
|
104
105
|
if (locale) setLocale(locale);
|
|
@@ -106,10 +107,14 @@
|
|
|
106
107
|
if (defaultTheme) setTheme(defaultTheme);
|
|
107
108
|
});
|
|
108
109
|
|
|
109
|
-
|
|
110
|
-
|
|
110
|
+
const queryClient = new QueryClient({
|
|
111
|
+
defaultOptions: {
|
|
112
|
+
queries: { staleTime: 30_000, retry: 1 },
|
|
113
|
+
},
|
|
114
|
+
});
|
|
111
115
|
|
|
112
|
-
// Initialize router with provider
|
|
116
|
+
// Initialize router with provider synchronously
|
|
117
|
+
initRouter(resolvedRouter);
|
|
113
118
|
$effect.pre(() => {
|
|
114
119
|
initRouter(resolvedRouter);
|
|
115
120
|
});
|
|
@@ -164,7 +169,7 @@
|
|
|
164
169
|
</div>
|
|
165
170
|
</div>
|
|
166
171
|
{:else if route === '/login' && loginPage}
|
|
167
|
-
{@render loginPage(
|
|
172
|
+
{@render loginPage()}
|
|
168
173
|
{:else if route === '/login' && authProvider}
|
|
169
174
|
<LoginPage {title} onSuccess={() => { isAuthenticated = true; navigate('/'); }} />
|
|
170
175
|
{:else if route === '/register' && authProvider?.register}
|
|
@@ -13,9 +13,7 @@ interface Props {
|
|
|
13
13
|
/** Theme configuration for dark-first mode, CSS overrides, etc. */
|
|
14
14
|
themeConfig?: ThemeConfig;
|
|
15
15
|
dashboard?: Snippet;
|
|
16
|
-
loginPage?: Snippet
|
|
17
|
-
onSuccess: () => void;
|
|
18
|
-
}]>;
|
|
16
|
+
loginPage?: Snippet;
|
|
19
17
|
/** Override default components via DI */
|
|
20
18
|
components?: Partial<ComponentRegistry>;
|
|
21
19
|
/** Custom multi-level menu configuration */
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
type ColumnVisibilityState,
|
|
10
10
|
type ExpandedState,
|
|
11
11
|
} from '@tanstack/svelte-table';
|
|
12
|
-
import {
|
|
12
|
+
import { createCoreRowModel } from '@tanstack/table-core';
|
|
13
13
|
|
|
14
14
|
import { useList, useDelete, useDeleteMany, getResource, notify } from '@svadmin/core';
|
|
15
15
|
import type { Pagination as PaginationState, Sort, Filter, FieldDefinition } from '@svadmin/core';
|
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
const tbl = createTable({
|
|
281
281
|
get data() { return query.data?.data ?? []; },
|
|
282
282
|
get columns() { return columns; },
|
|
283
|
-
getCoreRowModel:
|
|
283
|
+
getCoreRowModel: createCoreRowModel(),
|
|
284
284
|
manualPagination: true,
|
|
285
285
|
manualSorting: true,
|
|
286
286
|
getRowId: (row: any) => String(row[primaryKey]),
|
|
@@ -26,11 +26,12 @@
|
|
|
26
26
|
siteUrl?: string;
|
|
27
27
|
}>();
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const
|
|
29
|
+
// Retrieve optional component overrides from registry
|
|
30
|
+
const registry = getComponentRegistry() || {} as any;
|
|
31
|
+
const CustomBreadcrumbs = registry.Breadcrumbs;
|
|
32
|
+
const CustomThemeToggle = registry.ThemeToggle;
|
|
33
|
+
const CustomUserMenu = registry.UserMenu;
|
|
34
|
+
const CustomNotificationPanel = registry.NotificationPanel;
|
|
34
35
|
</script>
|
|
35
36
|
|
|
36
37
|
<header class="sticky top-0 z-30 flex h-14 w-full shrink-0 items-center justify-between bg-card/60 backdrop-blur-md px-4 md:px-6">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svadmin/ui",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.7",
|
|
4
4
|
"description": "Pre-built admin UI components — AdminApp, AutoTable, AutoForm, Sidebar, Layout",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"./components/*": "./dist/components/*"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@svadmin/core": "^0.23.
|
|
30
|
+
"@svadmin/core": "^0.23.6",
|
|
31
31
|
"@tanstack/svelte-query": "^6.0.0",
|
|
32
32
|
"highlight.js": "^11.11.1",
|
|
33
33
|
"isomorphic-dompurify": "^3.7.1",
|