fd36c970bc
* refactor: change moment to dayjs * refactor: remove antd css * refactor: change @formily/antd to @formily/antd-v5 * chore: add dep * chore: upgrade babel/core and typescript * refactor: rename moment to dayjs * fix(dayjs): add plugins * refactor: fix type errors * refactor: change default export to named export * chore: upgrade ts-loader * refactor: rename moment to dayjs * refactor: fix type errors * chore: upgrade deps for build * fix: fix build errors * fix: add antd reset css * fix: fix build error * chore: add __builtins__ * chore: optimize genStyleHook * refactor(Calendar): less to css-in-js * refactor(acl): less to css-in-js * refactor(board): less to css-in-js * chore: add antd-style * refactor(acl): use antd-style * refactor(board): use antd-style * refactor: schema-initializer * refactor: refactor genStyleHook * refactor: kanban * refactor: filter * refactor: upload * refactor: markdown * refactor: rename className to componentCls * refactor: rich-text * style: fix style * fix: fix merge error * chore: update yarn.lock * chore: upgrade formily * style: fix pageHeader * style: fix add button style * style: fix header menu color * chore: update yarn.lock * chore: upgrade deps * test: fix tests * test: fix tests * fix: fix build error * fix: fix style of plugin doc * fix: fix tests * fix: fix drag bug * refactor: remove useless code * fix: fix Modal style (T-621) * fix: fix box-shadow of subMenu (T-622) * fix: fix style of linkage rules (T-623) * fix: fix style of DataTemplate * fix: fix style of variable (T-620) * chore: update yarn.lock * fix: avoid test failed * test: fix error * chore: update yarn.lock * test: fix error * test(dayjs): fix error * fix: should delay show menu to avoid the menu not hidden * test: skip failure test * fix(mouseEnterDelay): change default value from 100 to 150 * test: avoid failed * refactor: rename component names * chore: optimize types * chore: lock antd version * fix: fix build * fix: fix build * fix: layout bg color use variable * fix: fix style of buttons * feat: remove theme config * fix(calendar): fix style * fix(mobile-client): fix dialog style * fix: fix test * refactor: make code gooder * chore: change code * fix: fix T-847 * fix: fix T-845 * fix: display block * fix: danger button * refactor: make tester better * fix: change moment to dayjs * fix: build error * fix: import dayjs/plugin/isSameOrBefore * refactor: downgrade @testing-library/react to fix warning * fix: fix CI * fix: upgrade deps to fix build * fix: fix test * fix: skip some filed tests to avoid error * fix: fix build errors that maked by merge code * refactor: remove moment * fix: error * feat: update doc --------- Co-authored-by: chenos <chenlinxh@gmail.com>
121 lines
2.7 KiB
Markdown
121 lines
2.7 KiB
Markdown
# v0.11: Update instructions
|
|
|
|
## New features
|
|
|
|
- New client application, plugin and router
|
|
- Ant design upgrade to v5
|
|
- New plugin
|
|
- Data visualization
|
|
- API keys
|
|
- Google map
|
|
|
|
## Incompatible changes
|
|
|
|
### New client application, plugin and router
|
|
|
|
#### Plugin changes
|
|
|
|
before you had to pass a component and the component needed to pass `props.children`, for example:
|
|
|
|
```tsx | pure
|
|
const HelloProvider = (props) => {
|
|
// do something logic
|
|
return <div>
|
|
{props.children}
|
|
</div>;
|
|
}
|
|
|
|
export default HelloProvider
|
|
```
|
|
|
|
now you need to change to the plugin way, for example:
|
|
|
|
```diff | pure
|
|
+import { Plugin } from '@nocobase/client'
|
|
|
|
const HelloProvider = (props) => {
|
|
// do something logic
|
|
return <div>
|
|
{props.children}
|
|
</div>;
|
|
}
|
|
|
|
+ export class HelloPlugin extends Plugin {
|
|
+ async load() {
|
|
+ this.app.addProvider(HelloProvider);
|
|
+ }
|
|
+ }
|
|
|
|
- export default HelloProvider;
|
|
+ export default HelloPlugin;
|
|
```
|
|
|
|
plugins are very powerful and can do a lot of things in the `load` phase:
|
|
|
|
- modify routes
|
|
- add Components
|
|
- add Providers
|
|
- add Scopes
|
|
- load other plugins
|
|
|
|
#### Routing changes
|
|
|
|
if you used `RouteSwitchContext` to modify the route before, you now need to replace it with a plugin:
|
|
|
|
```tsx | pure
|
|
import { RouteSwitchContext } from '@nocobase/client';
|
|
|
|
const HelloProvider = () => {
|
|
const { routes, ...others } = useContext(RouteSwitchContext);
|
|
routes[1].routes.unshift({
|
|
path: '/hello',
|
|
component: Hello,
|
|
});
|
|
|
|
return <div>
|
|
<RouteSwitchContext.Provider value={{ ...others, routes }}>
|
|
{props.children}
|
|
</RouteSwitchContext.Provider>
|
|
</div>
|
|
}
|
|
```
|
|
|
|
now you need to change to the plugin way, for example:
|
|
|
|
```diff | pure
|
|
- import { RouteSwitchContext } from '@nocobase/client';
|
|
+ import { Plugin } from '@nocobase/client';
|
|
|
|
const HelloProvider = (props) => {
|
|
- const { routes, ...others } = useContext(RouteSwitchContext);
|
|
- routes[1].routes.unshift({
|
|
- path: '/hello',
|
|
- component: Hello,
|
|
- });
|
|
|
|
return <div>
|
|
- <RouteSwitchContext.Provider value={{ ...others, routes }}>
|
|
{props.children}
|
|
- </RouteSwitchContext.Provider>
|
|
</div>
|
|
}
|
|
|
|
+ export class HelloPlugin extends Plugin {
|
|
+ async load() {
|
|
+ this.app.router.add('admin.hello', {
|
|
+ path: '/hello',
|
|
+ Component: Hello,
|
|
+ });
|
|
+ this.app.addProvider(HelloProvider);
|
|
+ }
|
|
+ }
|
|
+ export default HelloPlugin;
|
|
```
|
|
|
|
more details can be found in [packages/core/client/src/application/index.md](https://github.com/nocobase/nocobase/blob/main/packages/core/client/src/application/index.md)
|
|
|
|
### antd upgrade to v5
|
|
|
|
- antd related details view the official website [V4 to V5](https://ant.design/docs/react/migration-v5)
|
|
- `@formily/antd` replace with `@formily/antd-v5`
|