Merge branches 'fix-textare-autop' and 'nocobase-next' of https://github.com/nocobase/nocobase into nocobase-next
This commit is contained in:
commit
9615141180
@ -13,7 +13,7 @@ import {
|
|||||||
RemoteSchemaTemplateManagerProvider,
|
RemoteSchemaTemplateManagerProvider,
|
||||||
useDocumentTitle,
|
useDocumentTitle,
|
||||||
useRoute,
|
useRoute,
|
||||||
useSystemSettings,
|
useSystemSettings
|
||||||
} from '../../../';
|
} from '../../../';
|
||||||
|
|
||||||
const InternalAdminLayout = (props: any) => {
|
const InternalAdminLayout = (props: any) => {
|
||||||
@ -58,36 +58,42 @@ const InternalAdminLayout = (props: any) => {
|
|||||||
/>
|
/>
|
||||||
{/* {result?.data?.data?.title} */}
|
{/* {result?.data?.data?.title} */}
|
||||||
</div>
|
</div>
|
||||||
<RemoteSchemaComponent
|
<div
|
||||||
hidden={hidden}
|
style={{
|
||||||
uid={route.uiSchemaUid}
|
width: 'calc(100% - 590px)',
|
||||||
scope={{ onSelect, sideMenuRef, defaultSelectedUid }}
|
|
||||||
schemaTransform={(data) => {
|
|
||||||
if (!data) {
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
data['x-component-props'] = data['x-component-props'] || {};
|
|
||||||
data['x-component-props']['defaultSelectedUid'] = defaultSelectedUid;
|
|
||||||
return data;
|
|
||||||
}}
|
}}
|
||||||
onSuccess={(data) => {
|
>
|
||||||
if (defaultSelectedUid) {
|
<RemoteSchemaComponent
|
||||||
const s = findByUid(data?.data, defaultSelectedUid);
|
hidden={hidden}
|
||||||
if (s) {
|
uid={route.uiSchemaUid}
|
||||||
setTitle(s.title);
|
scope={{ onSelect, sideMenuRef, defaultSelectedUid }}
|
||||||
|
schemaTransform={(data) => {
|
||||||
|
if (!data) {
|
||||||
|
return data;
|
||||||
}
|
}
|
||||||
return;
|
data['x-component-props'] = data['x-component-props'] || {};
|
||||||
}
|
data['x-component-props']['defaultSelectedUid'] = defaultSelectedUid;
|
||||||
setHidden(true);
|
return data;
|
||||||
setTimeout(() => setHidden(false), 11);
|
}}
|
||||||
const s = findMenuItem(data?.data);
|
onSuccess={(data) => {
|
||||||
if (s) {
|
if (defaultSelectedUid) {
|
||||||
setSchema(s);
|
const s = findByUid(data?.data, defaultSelectedUid);
|
||||||
setTitle(s.title);
|
if (s) {
|
||||||
history.push(`/admin/${s['x-uid']}`);
|
setTitle(s.title);
|
||||||
}
|
}
|
||||||
}}
|
return;
|
||||||
/>
|
}
|
||||||
|
setHidden(true);
|
||||||
|
setTimeout(() => setHidden(false), 11);
|
||||||
|
const s = findMenuItem(data?.data);
|
||||||
|
if (s) {
|
||||||
|
setSchema(s);
|
||||||
|
setTitle(s.title);
|
||||||
|
history.push(`/admin/${s['x-uid']}`);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style={{ position: 'absolute', top: 0, right: 0 }}>
|
<div style={{ position: 'absolute', top: 0, right: 0 }}>
|
||||||
<PluginManager.Toolbar
|
<PluginManager.Toolbar
|
||||||
|
@ -134,6 +134,19 @@ const useSideMenuRef = () => {
|
|||||||
|
|
||||||
const MenuItemDesignerContext = createContext(null);
|
const MenuItemDesignerContext = createContext(null);
|
||||||
|
|
||||||
|
const AddMenuItemButton = () => {
|
||||||
|
const schema = useFieldSchema();
|
||||||
|
const { render } = useSchemaInitializer(schema['x-initializer']);
|
||||||
|
const { designable } = useDesignable();
|
||||||
|
return (
|
||||||
|
designable && (
|
||||||
|
<AntdMenu.Item disabled style={{ padding: '0 8px', order: 9999 }}>
|
||||||
|
{render({ style: { background: 'none' } })}
|
||||||
|
</AntdMenu.Item>
|
||||||
|
)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export const Menu: ComposedMenu = observer((props) => {
|
export const Menu: ComposedMenu = observer((props) => {
|
||||||
let {
|
let {
|
||||||
onSelect,
|
onSelect,
|
||||||
@ -192,66 +205,61 @@ export const Menu: ComposedMenu = observer((props) => {
|
|||||||
<DndContext>
|
<DndContext>
|
||||||
<MenuItemDesignerContext.Provider value={Designer}>
|
<MenuItemDesignerContext.Provider value={Designer}>
|
||||||
<MenuModeContext.Provider value={mode}>
|
<MenuModeContext.Provider value={mode}>
|
||||||
<div
|
<AntdMenu
|
||||||
style={{
|
{...others}
|
||||||
width: 'calc(100% - 200px - 390px)',
|
style={
|
||||||
display: 'flex',
|
{
|
||||||
justifyContent: 'flex-start',
|
|
||||||
alignItems: 'center',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<AntdMenu
|
|
||||||
{...others}
|
|
||||||
style={{
|
|
||||||
// width: mode === 'mix' ? '100%' : undefined,
|
// width: mode === 'mix' ? '100%' : undefined,
|
||||||
}}
|
}
|
||||||
className={css`
|
}
|
||||||
.ant-menu-item:hover {
|
className={css`
|
||||||
> .ant-menu-title-content > div {
|
.ant-menu-item:hover {
|
||||||
.general-schema-designer {
|
> .ant-menu-title-content > div {
|
||||||
display: block;
|
.general-schema-designer {
|
||||||
}
|
display: block;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`}
|
}
|
||||||
onSelect={(info: any) => {
|
`}
|
||||||
const s = schema.properties[info.key];
|
onSelect={(info: any) => {
|
||||||
if (mode === 'mix') {
|
const s = schema.properties[info.key];
|
||||||
setSideMenuSchema(s);
|
if (mode === 'mix') {
|
||||||
if (s['x-component'] !== 'Menu.SubMenu') {
|
setSideMenuSchema(s);
|
||||||
onSelect && onSelect(info);
|
if (s['x-component'] !== 'Menu.SubMenu') {
|
||||||
} else {
|
|
||||||
const menuItemSchema = findMenuItem(s);
|
|
||||||
if (!menuItemSchema) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// TODO
|
|
||||||
setLoading(true);
|
|
||||||
const keys = findKeysByUid(schema, menuItemSchema['x-uid']);
|
|
||||||
setDefaultSelectedKeys(keys);
|
|
||||||
setTimeout(() => {
|
|
||||||
setLoading(false);
|
|
||||||
}, 100);
|
|
||||||
onSelect &&
|
|
||||||
onSelect({
|
|
||||||
key: menuItemSchema.name,
|
|
||||||
item: {
|
|
||||||
props: {
|
|
||||||
schema: menuItemSchema,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
onSelect && onSelect(info);
|
onSelect && onSelect(info);
|
||||||
|
} else {
|
||||||
|
const menuItemSchema = findMenuItem(s);
|
||||||
|
if (!menuItemSchema) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// TODO
|
||||||
|
setLoading(true);
|
||||||
|
const keys = findKeysByUid(schema, menuItemSchema['x-uid']);
|
||||||
|
setDefaultSelectedKeys(keys);
|
||||||
|
setTimeout(() => {
|
||||||
|
setLoading(false);
|
||||||
|
}, 100);
|
||||||
|
onSelect &&
|
||||||
|
onSelect({
|
||||||
|
key: menuItemSchema.name,
|
||||||
|
item: {
|
||||||
|
props: {
|
||||||
|
schema: menuItemSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}}
|
} else {
|
||||||
mode={mode === 'mix' ? 'horizontal' : mode}
|
onSelect && onSelect(info);
|
||||||
defaultOpenKeys={defaultOpenKeys}
|
}
|
||||||
defaultSelectedKeys={defaultSelectedKeys}
|
}}
|
||||||
></AntdMenu>
|
mode={mode === 'mix' ? 'horizontal' : mode}
|
||||||
{render({ style: { background: 'none' } })}
|
defaultOpenKeys={defaultOpenKeys}
|
||||||
</div>
|
defaultSelectedKeys={defaultSelectedKeys}
|
||||||
|
>
|
||||||
|
<AddMenuItemButton />
|
||||||
|
{props.children}
|
||||||
|
</AntdMenu>
|
||||||
{loading
|
{loading
|
||||||
? null
|
? null
|
||||||
: mode === 'mix' &&
|
: mode === 'mix' &&
|
||||||
|
@ -32,7 +32,8 @@ export const CurrentUser = () => {
|
|||||||
<LanguageSettings />
|
<LanguageSettings />
|
||||||
<Menu.Divider />
|
<Menu.Divider />
|
||||||
<Menu.Item
|
<Menu.Item
|
||||||
onClick={() => {
|
onClick={async () => {
|
||||||
|
await api.resource('users').signout();
|
||||||
api.setBearerToken(null);
|
api.setBearerToken(null);
|
||||||
history.push('/signin');
|
history.push('/signin');
|
||||||
}}
|
}}
|
||||||
|
@ -44,7 +44,8 @@ export async function signin(ctx: Context, next: Next) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function signout(ctx: Context, next: Next) {
|
export async function signout(ctx: Context, next: Next) {
|
||||||
ctx.body = {};
|
await ctx.state.currentUser.update({ token: null });
|
||||||
|
ctx.body = ctx.state.currentUser;
|
||||||
await next();
|
await next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user