@venizia/ardor-admin 0.4.3 → 0.4.5
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/LICENSE.md +1 -7
- package/README.md +13 -0
- package/dist/common/types.d.ts +8 -0
- package/dist/common/types.d.ts.map +1 -1
- package/dist/components/application.d.ts.map +1 -1
- package/dist/components/application.js +10 -21
- package/dist/components/application.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/resolve.d.ts +30 -0
- package/dist/components/resolve.d.ts.map +1 -0
- package/dist/components/resolve.js +41 -0
- package/dist/components/resolve.js.map +1 -0
- package/dist/hooks/use-document-title.d.ts +8 -1
- package/dist/hooks/use-document-title.d.ts.map +1 -1
- package/dist/hooks/use-document-title.js +51 -10
- package/dist/hooks/use-document-title.js.map +1 -1
- package/package.json +8 -8
package/LICENSE.md
CHANGED
|
@@ -5,7 +5,7 @@ ARDOR is a TypeScript frontend application framework built on [IGNIS](https://ig
|
|
|
5
5
|
|
|
6
6
|
## MIT License
|
|
7
7
|
|
|
8
|
-
Copyright (c) 2025
|
|
8
|
+
Copyright (c) 2025 Venizia Co., Ltd.
|
|
9
9
|
|
|
10
10
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
11
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -62,8 +62,6 @@ these projects.
|
|
|
62
62
|
| [React Redux](https://github.com/reduxjs/react-redux) | MIT | React bindings for Redux |
|
|
63
63
|
| [TanStack Query](https://github.com/TanStack/query) | MIT | Asynchronous state management |
|
|
64
64
|
| [React Router](https://github.com/remix-run/react-router) | MIT | Routing |
|
|
65
|
-
| [Axios](https://github.com/axios/axios) | MIT | HTTP client |
|
|
66
|
-
| [Socket.IO Client](https://github.com/socketio/socket.io) | MIT | Real-time bidirectional communication |
|
|
67
65
|
| [Lodash](https://github.com/lodash/lodash) | MIT | Utility library |
|
|
68
66
|
| [node-polyglot](https://github.com/airbnb/polyglot.js) (`ra-i18n-polyglot`) | BSD-2-Clause | Internationalisation |
|
|
69
67
|
|
|
@@ -72,9 +70,6 @@ these projects.
|
|
|
72
70
|
| Library | License | Description |
|
|
73
71
|
|---------|---------|-------------|
|
|
74
72
|
| [Tailwind CSS](https://github.com/tailwindlabs/tailwindcss) | MIT | Utility-first CSS framework |
|
|
75
|
-
| [Radix UI](https://github.com/radix-ui/primitives) | MIT | Unstyled, accessible component primitives |
|
|
76
|
-
| [Lucide](https://github.com/lucide-icons/lucide) | ISC | Icon set |
|
|
77
|
-
| [Day.js](https://github.com/iamkun/dayjs) | MIT | Date manipulation library |
|
|
78
73
|
|
|
79
74
|
---
|
|
80
75
|
|
|
@@ -84,7 +79,6 @@ ARDOR is inspired by and built upon the work of many open-source projects:
|
|
|
84
79
|
|
|
85
80
|
- **[IGNIS](https://ignis.venizia.ai)** - The backend framework ARDOR is the frontend sibling of
|
|
86
81
|
- **[react-admin](https://marmelab.com/react-admin/)** by Marmelab - The admin framework ARDOR adapts
|
|
87
|
-
- **[LoopBack 4](https://loopback.io/)** by IBM/StrongLoop - Inspiration for the binding-key and provider patterns
|
|
88
82
|
- **[shadcn/ui](https://ui.shadcn.com/)** - Inspiration and source for the UI kit component layer
|
|
89
83
|
|
|
90
84
|
We thank all the maintainers and contributors of these projects for their excellent work.
|
package/README.md
CHANGED
|
@@ -37,3 +37,16 @@ declare module '@venizia/ardor-admin' {
|
|
|
37
37
|
## License
|
|
38
38
|
|
|
39
39
|
MIT - see [LICENSE.md](./LICENSE.md).
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
<p align="center">
|
|
44
|
+
<a href="https://venizia.ai">
|
|
45
|
+
<picture>
|
|
46
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://venizia.ai/assets/logo-white.svg">
|
|
47
|
+
<img src="https://venizia.ai/assets/logo.svg" alt="VENIZIA" height="28">
|
|
48
|
+
</picture>
|
|
49
|
+
</a>
|
|
50
|
+
<br>
|
|
51
|
+
<sub><code>@venizia/ardor-admin</code> is part of ARDOR, built and maintained by <a href="https://venizia.ai">VENIZIA</a>.</sub>
|
|
52
|
+
</p>
|
package/dist/common/types.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type { AuthProvider, CoreAdminProps, DataProvider, Locale, ResourceProps
|
|
|
5
5
|
import type { ReactNode } from 'react';
|
|
6
6
|
import type { RouteProps } from 'react-router-dom';
|
|
7
7
|
import type { DefaultNetworkRequestService, IDataSourceAuth, ISendParams, ISendResponse, RequestCountData, TConstValue, TRequestMethod, TRequestType } from '@venizia/ardor-kernel';
|
|
8
|
+
import type { TFeature } from '../features/feature.js';
|
|
8
9
|
/** What `DefaultRestDataProvider.request` sends: every react-admin method goes through it. */
|
|
9
10
|
export interface IRestRequestOptions<TResource extends string = string> {
|
|
10
11
|
resource: TResource;
|
|
@@ -52,5 +53,12 @@ export interface IApplication extends Omit<CoreAdminProps, 'children'> {
|
|
|
52
53
|
resources?: Array<ResourceProps>;
|
|
53
54
|
/** The application's own routes; each feature's are mounted after them. */
|
|
54
55
|
routes?: Array<RouteProps>;
|
|
56
|
+
/**
|
|
57
|
+
* The features to mount, when the shell mounts fewer than the application bound - filter
|
|
58
|
+
* `Features.read({ container })` and pass the result. Absent, every bound feature is mounted. The
|
|
59
|
+
* list is read as given: pass the same array until the filter changes, and remount the application
|
|
60
|
+
* (a `key`) when it does.
|
|
61
|
+
*/
|
|
62
|
+
features?: Array<TFeature>;
|
|
55
63
|
}
|
|
56
64
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EACV,4BAA4B,EAC5B,eAAe,EACf,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,YAAY,EACb,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAqFpD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAmEnD,CAAC"}
|
|
@@ -3,10 +3,10 @@ import React from 'react';
|
|
|
3
3
|
import { CoreAdmin, CustomRoutes, Resource } from 'ra-core';
|
|
4
4
|
import { Provider as ReduxProvider } from 'react-redux';
|
|
5
5
|
import { Route } from 'react-router-dom';
|
|
6
|
-
import {
|
|
6
|
+
import { Logger } from '@venizia/ardor-kernel';
|
|
7
7
|
import { Features } from '../features/feature.js';
|
|
8
|
-
import { FeatureMessages } from '../features/messages.js';
|
|
9
8
|
import { ApplicationContext } from '@venizia/ardor-react';
|
|
9
|
+
import { hasPendingFeatureMessages, loadFeatureMessages, resolveApplicationProviders, } from './resolve.js';
|
|
10
10
|
const Wrapper = ({ applicationName = 'ArdorApplication', container, reduxStore, suspense, enableDebug = false, children, }) => {
|
|
11
11
|
return (_jsx(ApplicationContext.Provider, { value: {
|
|
12
12
|
container,
|
|
@@ -22,7 +22,7 @@ const useFeatureMessagesReady = (opts) => {
|
|
|
22
22
|
const { features, i18nProvider } = opts;
|
|
23
23
|
const [state, setState] = React.useState(() => {
|
|
24
24
|
return {
|
|
25
|
-
isReady: !
|
|
25
|
+
isReady: !hasPendingFeatureMessages({ features, i18nProvider }),
|
|
26
26
|
};
|
|
27
27
|
});
|
|
28
28
|
React.useEffect(() => {
|
|
@@ -30,7 +30,7 @@ const useFeatureMessagesReady = (opts) => {
|
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
let isLive = true;
|
|
33
|
-
|
|
33
|
+
loadFeatureMessages({ features, i18nProvider }).then(() => {
|
|
34
34
|
if (isLive) {
|
|
35
35
|
setState({ isReady: true });
|
|
36
36
|
}
|
|
@@ -42,36 +42,25 @@ const useFeatureMessagesReady = (opts) => {
|
|
|
42
42
|
return () => {
|
|
43
43
|
isLive = false;
|
|
44
44
|
};
|
|
45
|
-
}, [i18nProvider, state.isReady]);
|
|
45
|
+
}, [features, i18nProvider, state.isReady]);
|
|
46
46
|
if (state.error) {
|
|
47
47
|
throw state.error;
|
|
48
48
|
}
|
|
49
49
|
return state.isReady;
|
|
50
50
|
};
|
|
51
51
|
export const ArdorApplication = (props) => {
|
|
52
|
-
const { container, reduxStore, suspense, enableDebug = false, resources, routes, ...reactAdminProps } = props;
|
|
52
|
+
const { container, reduxStore, suspense, enableDebug = false, resources, routes, features: selected, ...reactAdminProps } = props;
|
|
53
|
+
// The list the shell passed, else every feature the application bound.
|
|
53
54
|
const features = React.useMemo(() => {
|
|
54
|
-
return Features.read({ container });
|
|
55
|
-
}, [container]);
|
|
55
|
+
return selected ?? Features.read({ container });
|
|
56
|
+
}, [container, selected]);
|
|
56
57
|
// The application's own resources and routes, then each feature's it bound in `features()`.
|
|
57
58
|
const mounted = React.useMemo(() => {
|
|
58
59
|
return Features.mount({ features, resources, routes });
|
|
59
60
|
}, [features, resources, routes]);
|
|
60
61
|
// Resolved once per container: the props below are a new object on every render.
|
|
61
62
|
const providers = React.useMemo(() => {
|
|
62
|
-
|
|
63
|
-
key: CoreBindings.DEFAULT_REST_DATA_PROVIDER,
|
|
64
|
-
});
|
|
65
|
-
// Optional: an application with no sign-in leaves it unbound, and react-admin then runs
|
|
66
|
-
// without an auth provider - every page is public.
|
|
67
|
-
const authProvider = container.get({
|
|
68
|
-
key: CoreBindings.DEFAULT_AUTH_PROVIDER,
|
|
69
|
-
isOptional: true,
|
|
70
|
-
});
|
|
71
|
-
const i18nProvider = container.get({
|
|
72
|
-
key: CoreBindings.DEFAULT_I18N_PROVIDER,
|
|
73
|
-
});
|
|
74
|
-
return { dataProvider, ...(authProvider ? { authProvider } : {}), i18nProvider };
|
|
63
|
+
return resolveApplicationProviders({ container });
|
|
75
64
|
}, [container]);
|
|
76
65
|
const adminProps = { ...providers, ...reactAdminProps };
|
|
77
66
|
const isMessagesReady = useFeatureMessagesReady({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAqB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Container } from '@venizia/ignis-inversion';
|
|
2
|
+
import type { I18nProvider } from 'ra-core';
|
|
3
|
+
import type { IAuthProvider, IDataProvider } from '../common/index.js';
|
|
4
|
+
import { type TFeature } from '../features/feature.js';
|
|
5
|
+
/**
|
|
6
|
+
* What `ArdorApplication` resolves from the container when it mounts: the one place, so a test of
|
|
7
|
+
* the boot resolves exactly what the app does.
|
|
8
|
+
*/
|
|
9
|
+
export declare const resolveApplicationProviders: (opts: {
|
|
10
|
+
container: Container;
|
|
11
|
+
}) => {
|
|
12
|
+
dataProvider: IDataProvider;
|
|
13
|
+
authProvider?: IAuthProvider;
|
|
14
|
+
i18nProvider: I18nProvider;
|
|
15
|
+
};
|
|
16
|
+
/** Whether a feature loads the provider's current locale lazily, so a first render must wait for it. */
|
|
17
|
+
export declare const hasPendingFeatureMessages: (opts: {
|
|
18
|
+
features: Array<TFeature>;
|
|
19
|
+
i18nProvider: I18nProvider;
|
|
20
|
+
}) => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Loads the lazy messages of the locale: `changeLocale()` to the same locale loads them before
|
|
23
|
+
* react-admin renders. A failed load, such as a key two features define, rejects.
|
|
24
|
+
*/
|
|
25
|
+
export declare const loadFeatureMessages: (opts: {
|
|
26
|
+
features: Array<TFeature>;
|
|
27
|
+
i18nProvider: I18nProvider;
|
|
28
|
+
locale?: string;
|
|
29
|
+
}) => Promise<void>;
|
|
30
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/components/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAI,MAAM;IAChD,SAAS,EAAE,SAAS,CAAC;CACtB,KAAG;IAAE,YAAY,EAAE,aAAa,CAAC;IAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAiB1F,CAAC;AAEF,wGAAwG;AACxG,eAAO,MAAM,yBAAyB,GAAI,MAAM;IAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;CAC5B,KAAG,OAGH,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAU,MAAM;IAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG,OAAO,CAAC,IAAI,CASf,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CoreBindings } from '@venizia/ardor-kernel';
|
|
2
|
+
import {} from '../features/feature.js';
|
|
3
|
+
import { FeatureMessages } from '../features/messages.js';
|
|
4
|
+
/**
|
|
5
|
+
* What `ArdorApplication` resolves from the container when it mounts: the one place, so a test of
|
|
6
|
+
* the boot resolves exactly what the app does.
|
|
7
|
+
*/
|
|
8
|
+
export const resolveApplicationProviders = (opts) => {
|
|
9
|
+
const { container } = opts;
|
|
10
|
+
const dataProvider = container.get({
|
|
11
|
+
key: CoreBindings.DEFAULT_REST_DATA_PROVIDER,
|
|
12
|
+
});
|
|
13
|
+
// Optional: an application with no sign-in leaves it unbound, and react-admin then runs
|
|
14
|
+
// without an auth provider - every page is public.
|
|
15
|
+
const authProvider = container.get({
|
|
16
|
+
key: CoreBindings.DEFAULT_AUTH_PROVIDER,
|
|
17
|
+
isOptional: true,
|
|
18
|
+
});
|
|
19
|
+
const i18nProvider = container.get({
|
|
20
|
+
key: CoreBindings.DEFAULT_I18N_PROVIDER,
|
|
21
|
+
});
|
|
22
|
+
return { dataProvider, ...(authProvider ? { authProvider } : {}), i18nProvider };
|
|
23
|
+
};
|
|
24
|
+
/** Whether a feature loads the provider's current locale lazily, so a first render must wait for it. */
|
|
25
|
+
export const hasPendingFeatureMessages = (opts) => {
|
|
26
|
+
const { features, i18nProvider } = opts;
|
|
27
|
+
return FeatureMessages.hasLoader({ features, locale: i18nProvider.getLocale() });
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Loads the lazy messages of the locale: `changeLocale()` to the same locale loads them before
|
|
31
|
+
* react-admin renders. A failed load, such as a key two features define, rejects.
|
|
32
|
+
*/
|
|
33
|
+
export const loadFeatureMessages = async (opts) => {
|
|
34
|
+
const { features, i18nProvider } = opts;
|
|
35
|
+
const locale = opts.locale ?? i18nProvider.getLocale();
|
|
36
|
+
if (!FeatureMessages.hasLoader({ features, locale })) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
await i18nProvider.changeLocale(locale);
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/components/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAiB,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,IAE3C,EAA6F,EAAE;IAC9F,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAE3B,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAgB;QAChD,GAAG,EAAE,YAAY,CAAC,0BAA0B;KAC7C,CAAC,CAAC;IACH,wFAAwF;IACxF,mDAAmD;IACnD,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAgB;QAChD,GAAG,EAAE,YAAY,CAAC,qBAAqB;QACvC,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAe;QAC/C,GAAG,EAAE,YAAY,CAAC,qBAAqB;KACxC,CAAC,CAAC;IAEH,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;AACnF,CAAC,CAAC;AAEF,wGAAwG;AACxG,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAGzC,EAAW,EAAE;IACZ,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACxC,OAAO,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACnF,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,IAIzC,EAAiB,EAAE;IAClB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;IAEvD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IAED,MAAM,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC,CAAC"}
|
|
@@ -4,11 +4,18 @@ export interface IUseDocumentTitleOptions {
|
|
|
4
4
|
appTitle: string;
|
|
5
5
|
separator?: string;
|
|
6
6
|
enabled?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* A base title for a layout. It shows only while no other call is mounted, so a screen's title
|
|
9
|
+
* wins on the first mount although the layout's effect runs after the screen's. Of two fallbacks,
|
|
10
|
+
* the one mounted last shows. @default false
|
|
11
|
+
*/
|
|
12
|
+
fallback?: boolean;
|
|
7
13
|
}
|
|
8
14
|
/**
|
|
9
15
|
* Sets the tab title to the screen title before `appTitle` (`Orders · Back Office`). On unmount it
|
|
10
16
|
* puts back the title it replaced - unless someone wrote a newer one since - so one call per screen
|
|
11
|
-
* is enough, with no reset on navigation.
|
|
17
|
+
* is enough, with no reset on navigation. A layout passes `fallback: true` for a base title the
|
|
18
|
+
* screens override.
|
|
12
19
|
*/
|
|
13
20
|
export declare const useDocumentTitle: (opts: IUseDocumentTitleOptions) => void;
|
|
14
21
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-document-title.d.ts","sourceRoot":"","sources":["../../src/hooks/use-document-title.ts"],"names":[],"mappings":"AAEA,KAAK,qBAAqB,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"use-document-title.d.ts","sourceRoot":"","sources":["../../src/hooks/use-document-title.ts"],"names":[],"mappings":"AAEA,KAAK,qBAAqB,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+DD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,wBAAwB,SAkB9D,CAAC"}
|
|
@@ -1,26 +1,67 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
// The calls mounted now, in the order they registered, with the tab title before the first one and
|
|
3
|
+
// the title this module wrote last: the last is how a later writer outside the hook is recognised.
|
|
4
|
+
const entries = [];
|
|
5
|
+
let originalTitle;
|
|
6
|
+
let writtenTitle;
|
|
7
|
+
/** The last screen title mounted; with none, the last fallback. */
|
|
8
|
+
const resolveTitle = () => {
|
|
9
|
+
let fallback;
|
|
10
|
+
for (let index = entries.length - 1; index >= 0; index--) {
|
|
11
|
+
const entry = entries[index];
|
|
12
|
+
if (!entry.isFallback) {
|
|
13
|
+
return entry.title;
|
|
14
|
+
}
|
|
15
|
+
fallback ??= entry.title;
|
|
16
|
+
}
|
|
17
|
+
return fallback;
|
|
18
|
+
};
|
|
19
|
+
const writeTitle = () => {
|
|
20
|
+
writtenTitle = resolveTitle();
|
|
21
|
+
if (writtenTitle !== undefined) {
|
|
22
|
+
document.title = writtenTitle;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const register = (entry) => {
|
|
26
|
+
if (entries.length === 0) {
|
|
27
|
+
originalTitle = document.title;
|
|
28
|
+
}
|
|
29
|
+
entries.push(entry);
|
|
30
|
+
writeTitle();
|
|
31
|
+
};
|
|
32
|
+
const unregister = (entry) => {
|
|
33
|
+
entries.splice(entries.indexOf(entry), 1);
|
|
34
|
+
if (entries.length > 0) {
|
|
35
|
+
writeTitle();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Restore only our own write: a later writer (a layout re-mounted for a new locale, or a twin
|
|
39
|
+
// call React cleans up first) owns the title now.
|
|
40
|
+
if (originalTitle !== undefined && document.title === writtenTitle) {
|
|
41
|
+
document.title = originalTitle;
|
|
42
|
+
}
|
|
43
|
+
originalTitle = undefined;
|
|
44
|
+
writtenTitle = undefined;
|
|
45
|
+
};
|
|
2
46
|
/**
|
|
3
47
|
* Sets the tab title to the screen title before `appTitle` (`Orders · Back Office`). On unmount it
|
|
4
48
|
* puts back the title it replaced - unless someone wrote a newer one since - so one call per screen
|
|
5
|
-
* is enough, with no reset on navigation.
|
|
49
|
+
* is enough, with no reset on navigation. A layout passes `fallback: true` for a base title the
|
|
50
|
+
* screens override.
|
|
6
51
|
*/
|
|
7
52
|
export const useDocumentTitle = (opts) => {
|
|
8
|
-
const { title, appTitle, separator = ' · ', enabled = true } = opts;
|
|
53
|
+
const { title, appTitle, separator = ' · ', enabled = true, fallback = false } = opts;
|
|
9
54
|
const segments = Array.isArray(title) ? title : [title];
|
|
10
55
|
const documentTitle = [...segments, appTitle].filter(Boolean).join(separator);
|
|
11
56
|
React.useEffect(() => {
|
|
12
57
|
if (!enabled) {
|
|
13
58
|
return;
|
|
14
59
|
}
|
|
15
|
-
const
|
|
16
|
-
|
|
60
|
+
const entry = { title: documentTitle, isFallback: fallback };
|
|
61
|
+
register(entry);
|
|
17
62
|
return () => {
|
|
18
|
-
|
|
19
|
-
// call React cleans up first) owns the title now.
|
|
20
|
-
if (document.title === documentTitle) {
|
|
21
|
-
document.title = previousTitle;
|
|
22
|
-
}
|
|
63
|
+
unregister(entry);
|
|
23
64
|
};
|
|
24
|
-
}, [enabled, documentTitle]);
|
|
65
|
+
}, [enabled, documentTitle, fallback]);
|
|
25
66
|
};
|
|
26
67
|
//# sourceMappingURL=use-document-title.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-document-title.js","sourceRoot":"","sources":["../../src/hooks/use-document-title.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"use-document-title.js","sourceRoot":"","sources":["../../src/hooks/use-document-title.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venizia/ardor-admin",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "ARDOR react-admin adapter - the REST data provider, auth provider and i18n provider wired through IGNIS inversion, the ArdorApplication root component, the translate and notify hooks, and the English and Vietnamese message bundles.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"admin",
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"prepublishOnly": "make rebuild"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@venizia/ardor-kernel": "0.4.
|
|
64
|
-
"@venizia/ardor-react": "0.4.
|
|
63
|
+
"@venizia/ardor-kernel": "0.4.5",
|
|
64
|
+
"@venizia/ardor-react": "0.4.5",
|
|
65
65
|
"lodash": "^4.18.1"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
@@ -73,11 +73,11 @@
|
|
|
73
73
|
"@types/bun": "^1.4.3",
|
|
74
74
|
"@types/lodash": "^4.17.27",
|
|
75
75
|
"@types/react": "^19",
|
|
76
|
-
"@venizia/dev-configs": "^0.4.
|
|
77
|
-
"@venizia/ignis-filter": "^0.4.
|
|
78
|
-
"@venizia/ignis-helpers": "^0.4.
|
|
79
|
-
"@venizia/ignis-inversion": "^0.4.
|
|
80
|
-
"@venizia/ignis-kernel": "^0.4.
|
|
76
|
+
"@venizia/dev-configs": "^0.4.5",
|
|
77
|
+
"@venizia/ignis-filter": "^0.4.4",
|
|
78
|
+
"@venizia/ignis-helpers": "^0.4.5",
|
|
79
|
+
"@venizia/ignis-inversion": "^0.4.4",
|
|
80
|
+
"@venizia/ignis-kernel": "^0.4.5",
|
|
81
81
|
"eslint": "^10.13.0",
|
|
82
82
|
"oxlint": "1.89.0",
|
|
83
83
|
"oxlint-tsgolint": "7.0.2004",
|