@nocobase/client 0.7.0-alpha.2 → 0.7.0-alpha.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.
- package/esm/schema-component/antd/menu/Menu.js +1 -1
- package/esm/schema-component/antd/menu/Menu.js.map +1 -1
- package/esm/schema-initializer/buttons/BlockInitializers.d.ts +2 -11
- package/esm/schema-initializer/buttons/BlockInitializers.js +2 -0
- package/esm/schema-initializer/buttons/BlockInitializers.js.map +1 -1
- package/lib/schema-component/antd/menu/Menu.js +1 -1
- package/lib/schema-component/antd/menu/Menu.js.map +1 -1
- package/lib/schema-initializer/buttons/BlockInitializers.d.ts +2 -11
- package/lib/schema-initializer/buttons/BlockInitializers.js +2 -0
- package/lib/schema-initializer/buttons/BlockInitializers.js.map +1 -1
- package/package.json +4 -4
- package/src/schema-component/antd/menu/Menu.tsx +2 -1
- package/src/schema-initializer/buttons/BlockInitializers.tsx +2 -0
|
@@ -172,7 +172,7 @@ export var Menu = observer(function (props) {
|
|
|
172
172
|
else {
|
|
173
173
|
onSelect && onSelect(info);
|
|
174
174
|
}
|
|
175
|
-
}, mode: mode === 'mix' ? 'horizontal' : mode,
|
|
175
|
+
}, mode: mode === 'mix' ? 'horizontal' : mode, defaultOpenKeys: defaultOpenKeys, defaultSelectedKeys: defaultSelectedKeys, selectedKeys: defaultSelectedKeys }, { children: [designable && (_jsx(AntdMenu.Item, __assign({ disabled: true, style: { padding: '0 8px', order: 9999 } }, { children: render({ style: { background: 'none' } }) }), void 0)), props.children] }), void 0), loading
|
|
176
176
|
? null
|
|
177
177
|
: mode === 'mix' &&
|
|
178
178
|
(sideMenuSchema === null || sideMenuSchema === void 0 ? void 0 : sideMenuSchema['x-component']) === 'Menu.SubMenu' &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../../src/schema-component/antd/menu/Menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { css } from '@emotion/css';\nimport {\n observer,\n RecursionField,\n Schema,\n SchemaExpressionScopeContext,\n useField,\n useFieldSchema\n} from '@formily/react';\nimport { Menu as AntdMenu } from 'antd';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport { createDesignable, DndContext, SortableItem, useDesignable, useDesigner } from '../..';\nimport { Icon, useAPIClient, useSchemaInitializer } from '../../../';\nimport { useProps } from '../../hooks/useProps';\nimport { MenuDesigner } from './Menu.Designer';\nimport { findKeysByUid, findMenuItem } from './util';\n\nconst subMenuDesignerCss = css`\n position: relative;\n display: inline-block;\n margin-left: -24px;\n margin-right: -34px;\n padding: 0 34px 0 24px;\n width: calc(100% + 58px);\n &:hover {\n > .general-schema-designer {\n display: block;\n }\n }\n &.nb-action-link {\n > .general-schema-designer {\n top: -10px;\n bottom: -10px;\n left: -10px;\n right: -10px;\n }\n }\n > .general-schema-designer {\n position: absolute;\n z-index: 999;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: none;\n background: rgba(241, 139, 98, 0.06);\n border: 0;\n pointer-events: none;\n > .general-schema-designer-icons {\n position: absolute;\n right: 2px;\n top: 2px;\n line-height: 16px;\n pointer-events: all;\n .ant-space-item {\n background-color: #f18b62;\n color: #fff;\n line-height: 16px;\n width: 16px;\n padding-left: 1px;\n }\n }\n }\n`;\n\nconst designerCss = css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: -20px;\n margin-right: -20px;\n padding: 0 20px;\n width: calc(100% + 40px);\n &:hover {\n > .general-schema-designer {\n display: block;\n }\n }\n &.nb-action-link {\n > .general-schema-designer {\n top: -10px;\n bottom: -10px;\n left: -10px;\n right: -10px;\n }\n }\n > .general-schema-designer {\n position: absolute;\n z-index: 999;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: none;\n background: rgba(241, 139, 98, 0.06);\n border: 0;\n pointer-events: none;\n > .general-schema-designer-icons {\n position: absolute;\n right: 2px;\n top: 2px;\n line-height: 16px;\n pointer-events: all;\n .ant-space-item {\n background-color: #f18b62;\n color: #fff;\n line-height: 16px;\n width: 16px;\n padding-left: 1px;\n }\n }\n }\n`;\n\ntype ComposedMenu = React.FC<any> & {\n Item?: React.FC<any>;\n URL?: React.FC<any>;\n SubMenu?: React.FC<any>;\n Designer?: React.FC<any>;\n};\n\nconst MenuModeContext = createContext(null);\n\nconst useSideMenuRef = () => {\n const schema = useFieldSchema();\n const scope = useContext(SchemaExpressionScopeContext);\n const scopeKey = schema?.['x-component-props']?.['sideMenuRefScopeKey'];\n if (!scopeKey) {\n return;\n }\n return scope[scopeKey];\n};\n\nconst MenuItemDesignerContext = createContext(null);\n\nexport const Menu: ComposedMenu = observer((props) => {\n let {\n onSelect,\n mode,\n selectedUid,\n defaultSelectedUid,\n sideMenuRefScopeKey,\n defaultSelectedKeys: dSelectedKeys,\n defaultOpenKeys: dOpenKeys,\n ...others\n } = useProps(props);\n const { t } = useTranslation();\n const Designer = useDesigner();\n const schema = useFieldSchema();\n const { refresh } = useDesignable();\n const api = useAPIClient();\n const { render } = useSchemaInitializer(schema['x-initializer']);\n const sideMenuRef = useSideMenuRef();\n const [defaultSelectedKeys, setDefaultSelectedKeys] = useState(() => {\n if (dSelectedKeys) {\n return dSelectedKeys;\n }\n if (defaultSelectedUid) {\n return findKeysByUid(schema, defaultSelectedUid);\n }\n return [];\n });\n const [loading, setLoading] = useState(false);\n const [defaultOpenKeys, setDefaultOpenKeys] = useState(() => {\n if (['inline', 'mix'].includes(mode)) {\n return dOpenKeys || defaultSelectedKeys;\n }\n return dOpenKeys;\n });\n const [sideMenuSchema, setSideMenuSchema] = useState<Schema>(() => {\n const key = defaultSelectedKeys?.[0] || null;\n if (mode === 'mix' && key) {\n const s = schema.properties?.[key];\n if (s['x-component'] === 'Menu.SubMenu') {\n return s;\n }\n }\n return null;\n });\n useEffect(() => {\n const keys = findKeysByUid(schema, selectedUid);\n setDefaultSelectedKeys(keys);\n if (['inline', 'mix'].includes(mode)) {\n setDefaultOpenKeys(dOpenKeys || keys);\n }\n const key = keys?.[0] || null;\n if (mode === 'mix') {\n if (key) {\n const s = schema.properties?.[key];\n if (s['x-component'] === 'Menu.SubMenu') {\n setSideMenuSchema(s);\n }\n } else {\n setSideMenuSchema(null);\n }\n }\n }, [selectedUid]);\n useEffect(() => {\n if (['inline', 'mix'].includes(mode)) {\n setDefaultOpenKeys(defaultSelectedKeys);\n }\n }, [defaultSelectedKeys]);\n useEffect(() => {\n const sideMenuElement = sideMenuRef?.current as HTMLElement;\n if (!sideMenuElement) {\n return;\n }\n sideMenuElement.style.display = sideMenuSchema?.['x-component'] === 'Menu.SubMenu' ? 'block' : 'none';\n }, [sideMenuSchema?.name, sideMenuRef]);\n const { designable } = useDesignable();\n return (\n <DndContext>\n <MenuItemDesignerContext.Provider value={Designer}>\n <MenuModeContext.Provider value={mode}>\n <AntdMenu\n {...others}\n style={\n {\n // width: mode === 'mix' ? '100%' : undefined,\n }\n }\n className={css`\n .ant-menu-item:hover {\n > .ant-menu-title-content > div {\n .general-schema-designer {\n display: block;\n }\n }\n }\n `}\n onSelect={(info: any) => {\n const s = schema.properties[info.key];\n if (mode === 'mix') {\n setSideMenuSchema(s);\n if (s['x-component'] !== 'Menu.SubMenu') {\n onSelect && onSelect(info);\n } else {\n const menuItemSchema = findMenuItem(s);\n if (!menuItemSchema) {\n return;\n }\n // TODO\n setLoading(true);\n const keys = findKeysByUid(schema, menuItemSchema['x-uid']);\n setDefaultSelectedKeys(keys);\n setTimeout(() => {\n setLoading(false);\n }, 100);\n onSelect &&\n onSelect({\n key: menuItemSchema.name,\n item: {\n props: {\n schema: menuItemSchema,\n },\n },\n });\n }\n } else {\n onSelect && onSelect(info);\n }\n }}\n mode={mode === 'mix' ? 'horizontal' : mode}\n openKeys={defaultOpenKeys}\n selectedKeys={defaultSelectedKeys}\n >\n {designable && (\n <AntdMenu.Item disabled style={{ padding: '0 8px', order: 9999 }}>\n {render({ style: { background: 'none' } })}\n </AntdMenu.Item>\n )}\n {props.children}\n </AntdMenu>\n {loading\n ? null\n : mode === 'mix' &&\n sideMenuSchema?.['x-component'] === 'Menu.SubMenu' &&\n sideMenuRef?.current?.firstChild &&\n createPortal(\n <MenuModeContext.Provider value={'inline'}>\n <AntdMenu\n mode={'inline'}\n defaultOpenKeys={defaultOpenKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n onSelect={(info) => {\n onSelect && onSelect(info);\n }}\n className={css`\n .ant-menu-item {\n > .ant-menu-title-content {\n margin-left: -24px;\n margin-right: -16px;\n padding: 0 16px 0 24px;\n > div {\n > .general-schema-designer {\n right: 6px !important;\n }\n }\n }\n }\n .ant-menu-submenu-title {\n .ant-menu-title-content {\n margin-left: -24px;\n margin-right: -34px;\n padding: 0 34px 0 24px;\n > div {\n > .general-schema-designer {\n right: 6px !important;\n }\n > span.anticon {\n margin-right: 10px;\n }\n }\n }\n }\n `}\n >\n <RecursionField schema={sideMenuSchema} onlyRenderProperties />\n {render({\n style: { margin: 8 },\n insert: (s) => {\n const dn = createDesignable({\n t,\n api,\n refresh,\n current: sideMenuSchema,\n });\n dn.loadAPIClientEvents();\n dn.insertAdjacent('beforeEnd', s);\n },\n })}\n </AntdMenu>\n </MenuModeContext.Provider>,\n sideMenuRef.current.firstChild,\n )}\n </MenuModeContext.Provider>\n </MenuItemDesignerContext.Provider>\n </DndContext>\n );\n});\n\nMenu.Item = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const Designer = useContext(MenuItemDesignerContext);\n return (\n <AntdMenu.Item {...others} key={schema.name} eventKey={schema.name} schema={schema}>\n <SortableItem className={designerCss}>\n <Icon type={icon} />\n <span\n className={css`\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n width: 100%;\n vertical-align: middle;\n `}\n >\n {field.title}\n </span>\n <Designer />\n </SortableItem>\n </AntdMenu.Item>\n );\n});\n\nMenu.URL = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const Designer = useContext(MenuItemDesignerContext);\n return (\n <AntdMenu.Item\n {...others}\n key={schema.name}\n eventKey={schema.name}\n schema={schema}\n onClick={() => {\n window.open(props.href, '_blank');\n }}\n >\n <SortableItem className={designerCss}>\n <Icon type={icon} />\n {field.title}\n <Designer />\n </SortableItem>\n </AntdMenu.Item>\n );\n});\n\nMenu.SubMenu = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const mode = useContext(MenuModeContext);\n const Designer = useContext(MenuItemDesignerContext);\n if (mode === 'mix') {\n return <Menu.Item {...props} />;\n }\n return (\n <AntdMenu.SubMenu\n {...others}\n key={schema.name}\n eventKey={schema.name}\n title={\n <SortableItem className={subMenuDesignerCss}>\n <Icon type={icon} />\n {field.title}\n <Designer />\n </SortableItem>\n }\n >\n <RecursionField schema={schema} onlyRenderProperties />\n </AntdMenu.SubMenu>\n );\n});\n\nMenu.Designer = MenuDesigner;\n"]}
|
|
1
|
+
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../../src/schema-component/antd/menu/Menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { css } from '@emotion/css';\nimport {\n observer,\n RecursionField,\n Schema,\n SchemaExpressionScopeContext,\n useField,\n useFieldSchema\n} from '@formily/react';\nimport { Menu as AntdMenu } from 'antd';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport { createDesignable, DndContext, SortableItem, useDesignable, useDesigner } from '../..';\nimport { Icon, useAPIClient, useSchemaInitializer } from '../../../';\nimport { useProps } from '../../hooks/useProps';\nimport { MenuDesigner } from './Menu.Designer';\nimport { findKeysByUid, findMenuItem } from './util';\n\nconst subMenuDesignerCss = css`\n position: relative;\n display: inline-block;\n margin-left: -24px;\n margin-right: -34px;\n padding: 0 34px 0 24px;\n width: calc(100% + 58px);\n &:hover {\n > .general-schema-designer {\n display: block;\n }\n }\n &.nb-action-link {\n > .general-schema-designer {\n top: -10px;\n bottom: -10px;\n left: -10px;\n right: -10px;\n }\n }\n > .general-schema-designer {\n position: absolute;\n z-index: 999;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: none;\n background: rgba(241, 139, 98, 0.06);\n border: 0;\n pointer-events: none;\n > .general-schema-designer-icons {\n position: absolute;\n right: 2px;\n top: 2px;\n line-height: 16px;\n pointer-events: all;\n .ant-space-item {\n background-color: #f18b62;\n color: #fff;\n line-height: 16px;\n width: 16px;\n padding-left: 1px;\n }\n }\n }\n`;\n\nconst designerCss = css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: -20px;\n margin-right: -20px;\n padding: 0 20px;\n width: calc(100% + 40px);\n &:hover {\n > .general-schema-designer {\n display: block;\n }\n }\n &.nb-action-link {\n > .general-schema-designer {\n top: -10px;\n bottom: -10px;\n left: -10px;\n right: -10px;\n }\n }\n > .general-schema-designer {\n position: absolute;\n z-index: 999;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: none;\n background: rgba(241, 139, 98, 0.06);\n border: 0;\n pointer-events: none;\n > .general-schema-designer-icons {\n position: absolute;\n right: 2px;\n top: 2px;\n line-height: 16px;\n pointer-events: all;\n .ant-space-item {\n background-color: #f18b62;\n color: #fff;\n line-height: 16px;\n width: 16px;\n padding-left: 1px;\n }\n }\n }\n`;\n\ntype ComposedMenu = React.FC<any> & {\n Item?: React.FC<any>;\n URL?: React.FC<any>;\n SubMenu?: React.FC<any>;\n Designer?: React.FC<any>;\n};\n\nconst MenuModeContext = createContext(null);\n\nconst useSideMenuRef = () => {\n const schema = useFieldSchema();\n const scope = useContext(SchemaExpressionScopeContext);\n const scopeKey = schema?.['x-component-props']?.['sideMenuRefScopeKey'];\n if (!scopeKey) {\n return;\n }\n return scope[scopeKey];\n};\n\nconst MenuItemDesignerContext = createContext(null);\n\nexport const Menu: ComposedMenu = observer((props) => {\n let {\n onSelect,\n mode,\n selectedUid,\n defaultSelectedUid,\n sideMenuRefScopeKey,\n defaultSelectedKeys: dSelectedKeys,\n defaultOpenKeys: dOpenKeys,\n ...others\n } = useProps(props);\n const { t } = useTranslation();\n const Designer = useDesigner();\n const schema = useFieldSchema();\n const { refresh } = useDesignable();\n const api = useAPIClient();\n const { render } = useSchemaInitializer(schema['x-initializer']);\n const sideMenuRef = useSideMenuRef();\n const [defaultSelectedKeys, setDefaultSelectedKeys] = useState(() => {\n if (dSelectedKeys) {\n return dSelectedKeys;\n }\n if (defaultSelectedUid) {\n return findKeysByUid(schema, defaultSelectedUid);\n }\n return [];\n });\n const [loading, setLoading] = useState(false);\n const [defaultOpenKeys, setDefaultOpenKeys] = useState(() => {\n if (['inline', 'mix'].includes(mode)) {\n return dOpenKeys || defaultSelectedKeys;\n }\n return dOpenKeys;\n });\n const [sideMenuSchema, setSideMenuSchema] = useState<Schema>(() => {\n const key = defaultSelectedKeys?.[0] || null;\n if (mode === 'mix' && key) {\n const s = schema.properties?.[key];\n if (s['x-component'] === 'Menu.SubMenu') {\n return s;\n }\n }\n return null;\n });\n useEffect(() => {\n const keys = findKeysByUid(schema, selectedUid);\n setDefaultSelectedKeys(keys);\n if (['inline', 'mix'].includes(mode)) {\n setDefaultOpenKeys(dOpenKeys || keys);\n }\n const key = keys?.[0] || null;\n if (mode === 'mix') {\n if (key) {\n const s = schema.properties?.[key];\n if (s['x-component'] === 'Menu.SubMenu') {\n setSideMenuSchema(s);\n }\n } else {\n setSideMenuSchema(null);\n }\n }\n }, [selectedUid]);\n useEffect(() => {\n if (['inline', 'mix'].includes(mode)) {\n setDefaultOpenKeys(defaultSelectedKeys);\n }\n }, [defaultSelectedKeys]);\n useEffect(() => {\n const sideMenuElement = sideMenuRef?.current as HTMLElement;\n if (!sideMenuElement) {\n return;\n }\n sideMenuElement.style.display = sideMenuSchema?.['x-component'] === 'Menu.SubMenu' ? 'block' : 'none';\n }, [sideMenuSchema?.name, sideMenuRef]);\n const { designable } = useDesignable();\n return (\n <DndContext>\n <MenuItemDesignerContext.Provider value={Designer}>\n <MenuModeContext.Provider value={mode}>\n <AntdMenu\n {...others}\n style={\n {\n // width: mode === 'mix' ? '100%' : undefined,\n }\n }\n className={css`\n .ant-menu-item:hover {\n > .ant-menu-title-content > div {\n .general-schema-designer {\n display: block;\n }\n }\n }\n `}\n onSelect={(info: any) => {\n const s = schema.properties[info.key];\n if (mode === 'mix') {\n setSideMenuSchema(s);\n if (s['x-component'] !== 'Menu.SubMenu') {\n onSelect && onSelect(info);\n } else {\n const menuItemSchema = findMenuItem(s);\n if (!menuItemSchema) {\n return;\n }\n // TODO\n setLoading(true);\n const keys = findKeysByUid(schema, menuItemSchema['x-uid']);\n setDefaultSelectedKeys(keys);\n setTimeout(() => {\n setLoading(false);\n }, 100);\n onSelect &&\n onSelect({\n key: menuItemSchema.name,\n item: {\n props: {\n schema: menuItemSchema,\n },\n },\n });\n }\n } else {\n onSelect && onSelect(info);\n }\n }}\n mode={mode === 'mix' ? 'horizontal' : mode}\n defaultOpenKeys={defaultOpenKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n selectedKeys={defaultSelectedKeys}\n >\n {designable && (\n <AntdMenu.Item disabled style={{ padding: '0 8px', order: 9999 }}>\n {render({ style: { background: 'none' } })}\n </AntdMenu.Item>\n )}\n {props.children}\n </AntdMenu>\n {loading\n ? null\n : mode === 'mix' &&\n sideMenuSchema?.['x-component'] === 'Menu.SubMenu' &&\n sideMenuRef?.current?.firstChild &&\n createPortal(\n <MenuModeContext.Provider value={'inline'}>\n <AntdMenu\n mode={'inline'}\n defaultOpenKeys={defaultOpenKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n onSelect={(info) => {\n onSelect && onSelect(info);\n }}\n className={css`\n .ant-menu-item {\n > .ant-menu-title-content {\n margin-left: -24px;\n margin-right: -16px;\n padding: 0 16px 0 24px;\n > div {\n > .general-schema-designer {\n right: 6px !important;\n }\n }\n }\n }\n .ant-menu-submenu-title {\n .ant-menu-title-content {\n margin-left: -24px;\n margin-right: -34px;\n padding: 0 34px 0 24px;\n > div {\n > .general-schema-designer {\n right: 6px !important;\n }\n > span.anticon {\n margin-right: 10px;\n }\n }\n }\n }\n `}\n >\n <RecursionField schema={sideMenuSchema} onlyRenderProperties />\n {render({\n style: { margin: 8 },\n insert: (s) => {\n const dn = createDesignable({\n t,\n api,\n refresh,\n current: sideMenuSchema,\n });\n dn.loadAPIClientEvents();\n dn.insertAdjacent('beforeEnd', s);\n },\n })}\n </AntdMenu>\n </MenuModeContext.Provider>,\n sideMenuRef.current.firstChild,\n )}\n </MenuModeContext.Provider>\n </MenuItemDesignerContext.Provider>\n </DndContext>\n );\n});\n\nMenu.Item = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const Designer = useContext(MenuItemDesignerContext);\n return (\n <AntdMenu.Item {...others} key={schema.name} eventKey={schema.name} schema={schema}>\n <SortableItem className={designerCss}>\n <Icon type={icon} />\n <span\n className={css`\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n width: 100%;\n vertical-align: middle;\n `}\n >\n {field.title}\n </span>\n <Designer />\n </SortableItem>\n </AntdMenu.Item>\n );\n});\n\nMenu.URL = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const Designer = useContext(MenuItemDesignerContext);\n return (\n <AntdMenu.Item\n {...others}\n key={schema.name}\n eventKey={schema.name}\n schema={schema}\n onClick={() => {\n window.open(props.href, '_blank');\n }}\n >\n <SortableItem className={designerCss}>\n <Icon type={icon} />\n {field.title}\n <Designer />\n </SortableItem>\n </AntdMenu.Item>\n );\n});\n\nMenu.SubMenu = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const mode = useContext(MenuModeContext);\n const Designer = useContext(MenuItemDesignerContext);\n if (mode === 'mix') {\n return <Menu.Item {...props} />;\n }\n return (\n <AntdMenu.SubMenu\n {...others}\n key={schema.name}\n eventKey={schema.name}\n title={\n <SortableItem className={subMenuDesignerCss}>\n <Icon type={icon} />\n {field.title}\n <Designer />\n </SortableItem>\n }\n >\n <RecursionField schema={schema} onlyRenderProperties />\n </AntdMenu.SubMenu>\n );\n});\n\nMenu.Designer = MenuDesigner;\n"]}
|
|
@@ -124,7 +124,7 @@ export declare const BlockInitializers: {
|
|
|
124
124
|
};
|
|
125
125
|
};
|
|
126
126
|
};
|
|
127
|
-
items:
|
|
127
|
+
items: {
|
|
128
128
|
key: string;
|
|
129
129
|
type: string;
|
|
130
130
|
title: string;
|
|
@@ -134,14 +134,5 @@ export declare const BlockInitializers: {
|
|
|
134
134
|
title: string;
|
|
135
135
|
component: string;
|
|
136
136
|
}[];
|
|
137
|
-
}
|
|
138
|
-
type: string;
|
|
139
|
-
title: string;
|
|
140
|
-
children: {
|
|
141
|
-
type: string;
|
|
142
|
-
title: string;
|
|
143
|
-
component: string;
|
|
144
|
-
}[];
|
|
145
|
-
key?: undefined;
|
|
146
|
-
})[];
|
|
137
|
+
}[];
|
|
147
138
|
};
|
|
@@ -43,10 +43,12 @@ export var BlockInitializers = {
|
|
|
43
43
|
],
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
|
+
key: 'media',
|
|
46
47
|
type: 'itemGroup',
|
|
47
48
|
title: '{{t("Media")}}',
|
|
48
49
|
children: [
|
|
49
50
|
{
|
|
51
|
+
key: 'markdown',
|
|
50
52
|
type: 'item',
|
|
51
53
|
title: '{{t("Markdown")}}',
|
|
52
54
|
component: 'MarkdownBlockInitializer',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockInitializers.js","sourceRoot":"","sources":["../../../src/schema-initializer/buttons/BlockInitializers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,UAAU;AACV,MAAM,CAAC,IAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,oBAAoB;IAC3B,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE;QACL;YACE,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,OAAO;oBACZ,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,gBAAgB;oBACvB,SAAS,EAAE,uBAAuB;iBACnC;gBACD;oBACE,GAAG,EAAE,MAAM;oBACX,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,eAAe;oBACtB,SAAS,EAAE,sBAAsB;iBAClC;gBACD;oBACE,GAAG,EAAE,SAAS;oBACd,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,kBAAkB;oBACzB,SAAS,EAAE,yBAAyB;iBACrC;gBACD;oBACE,GAAG,EAAE,UAAU;oBACf,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,0BAA0B;iBACtC;gBACD;oBACE,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,iBAAiB;oBACxB,SAAS,EAAE,wBAAwB;iBACpC;aACF;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,gBAAgB;YACvB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF;KACF;CACF,CAAC","sourcesContent":["import { gridRowColWrap } from '../utils';\n\n// 页面里添加区块\nexport const BlockInitializers = {\n title: '{{t(\"Add block\")}}',\n icon: 'PlusOutlined',\n wrap: gridRowColWrap,\n items: [\n {\n key: 'dataBlocks',\n type: 'itemGroup',\n title: 'Data blocks',\n children: [\n {\n key: 'table',\n type: 'item',\n title: '{{t(\"Table\")}}',\n component: 'TableBlockInitializer',\n },\n {\n key: 'form',\n type: 'item',\n title: '{{t(\"Form\")}}',\n component: 'FormBlockInitializer',\n },\n {\n key: 'details',\n type: 'item',\n title: '{{t(\"Details\")}}',\n component: 'DetailsBlockInitializer',\n },\n {\n key: 'calendar',\n type: 'item',\n title: '{{t(\"Calendar\")}}',\n component: 'CalendarBlockInitializer',\n },\n {\n key: 'kanban',\n type: 'item',\n title: '{{t(\"Kanban\")}}',\n component: 'KanbanBlockInitializer',\n },\n ],\n },\n {\n type: 'itemGroup',\n title: '{{t(\"Media\")}}',\n children: [\n {\n type: 'item',\n title: '{{t(\"Markdown\")}}',\n component: 'MarkdownBlockInitializer',\n },\n ],\n },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"file":"BlockInitializers.js","sourceRoot":"","sources":["../../../src/schema-initializer/buttons/BlockInitializers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,UAAU;AACV,MAAM,CAAC,IAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,oBAAoB;IAC3B,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE;QACL;YACE,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,OAAO;oBACZ,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,gBAAgB;oBACvB,SAAS,EAAE,uBAAuB;iBACnC;gBACD;oBACE,GAAG,EAAE,MAAM;oBACX,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,eAAe;oBACtB,SAAS,EAAE,sBAAsB;iBAClC;gBACD;oBACE,GAAG,EAAE,SAAS;oBACd,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,kBAAkB;oBACzB,SAAS,EAAE,yBAAyB;iBACrC;gBACD;oBACE,GAAG,EAAE,UAAU;oBACf,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,0BAA0B;iBACtC;gBACD;oBACE,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,iBAAiB;oBACxB,SAAS,EAAE,wBAAwB;iBACpC;aACF;SACF;QACD;YACE,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,gBAAgB;YACvB,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,UAAU;oBACf,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF;KACF;CACF,CAAC","sourcesContent":["import { gridRowColWrap } from '../utils';\n\n// 页面里添加区块\nexport const BlockInitializers = {\n title: '{{t(\"Add block\")}}',\n icon: 'PlusOutlined',\n wrap: gridRowColWrap,\n items: [\n {\n key: 'dataBlocks',\n type: 'itemGroup',\n title: 'Data blocks',\n children: [\n {\n key: 'table',\n type: 'item',\n title: '{{t(\"Table\")}}',\n component: 'TableBlockInitializer',\n },\n {\n key: 'form',\n type: 'item',\n title: '{{t(\"Form\")}}',\n component: 'FormBlockInitializer',\n },\n {\n key: 'details',\n type: 'item',\n title: '{{t(\"Details\")}}',\n component: 'DetailsBlockInitializer',\n },\n {\n key: 'calendar',\n type: 'item',\n title: '{{t(\"Calendar\")}}',\n component: 'CalendarBlockInitializer',\n },\n {\n key: 'kanban',\n type: 'item',\n title: '{{t(\"Kanban\")}}',\n component: 'KanbanBlockInitializer',\n },\n ],\n },\n {\n key: 'media',\n type: 'itemGroup',\n title: '{{t(\"Media\")}}',\n children: [\n {\n key: 'markdown',\n type: 'item',\n title: '{{t(\"Markdown\")}}',\n component: 'MarkdownBlockInitializer',\n },\n ],\n },\n ],\n};\n"]}
|
|
@@ -175,7 +175,7 @@ exports.Menu = (0, react_2.observer)(function (props) {
|
|
|
175
175
|
else {
|
|
176
176
|
onSelect && onSelect(info);
|
|
177
177
|
}
|
|
178
|
-
}, mode: mode === 'mix' ? 'horizontal' : mode,
|
|
178
|
+
}, mode: mode === 'mix' ? 'horizontal' : mode, defaultOpenKeys: defaultOpenKeys, defaultSelectedKeys: defaultSelectedKeys, selectedKeys: defaultSelectedKeys }, { children: [designable && ((0, jsx_runtime_1.jsx)(antd_1.Menu.Item, __assign({ disabled: true, style: { padding: '0 8px', order: 9999 } }, { children: render({ style: { background: 'none' } }) }), void 0)), props.children] }), void 0), loading
|
|
179
179
|
? null
|
|
180
180
|
: mode === 'mix' &&
|
|
181
181
|
(sideMenuSchema === null || sideMenuSchema === void 0 ? void 0 : sideMenuSchema['x-component']) === 'Menu.SubMenu' &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../../src/schema-component/antd/menu/Menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { css } from '@emotion/css';\nimport {\n observer,\n RecursionField,\n Schema,\n SchemaExpressionScopeContext,\n useField,\n useFieldSchema\n} from '@formily/react';\nimport { Menu as AntdMenu } from 'antd';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport { createDesignable, DndContext, SortableItem, useDesignable, useDesigner } from '../..';\nimport { Icon, useAPIClient, useSchemaInitializer } from '../../../';\nimport { useProps } from '../../hooks/useProps';\nimport { MenuDesigner } from './Menu.Designer';\nimport { findKeysByUid, findMenuItem } from './util';\n\nconst subMenuDesignerCss = css`\n position: relative;\n display: inline-block;\n margin-left: -24px;\n margin-right: -34px;\n padding: 0 34px 0 24px;\n width: calc(100% + 58px);\n &:hover {\n > .general-schema-designer {\n display: block;\n }\n }\n &.nb-action-link {\n > .general-schema-designer {\n top: -10px;\n bottom: -10px;\n left: -10px;\n right: -10px;\n }\n }\n > .general-schema-designer {\n position: absolute;\n z-index: 999;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: none;\n background: rgba(241, 139, 98, 0.06);\n border: 0;\n pointer-events: none;\n > .general-schema-designer-icons {\n position: absolute;\n right: 2px;\n top: 2px;\n line-height: 16px;\n pointer-events: all;\n .ant-space-item {\n background-color: #f18b62;\n color: #fff;\n line-height: 16px;\n width: 16px;\n padding-left: 1px;\n }\n }\n }\n`;\n\nconst designerCss = css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: -20px;\n margin-right: -20px;\n padding: 0 20px;\n width: calc(100% + 40px);\n &:hover {\n > .general-schema-designer {\n display: block;\n }\n }\n &.nb-action-link {\n > .general-schema-designer {\n top: -10px;\n bottom: -10px;\n left: -10px;\n right: -10px;\n }\n }\n > .general-schema-designer {\n position: absolute;\n z-index: 999;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: none;\n background: rgba(241, 139, 98, 0.06);\n border: 0;\n pointer-events: none;\n > .general-schema-designer-icons {\n position: absolute;\n right: 2px;\n top: 2px;\n line-height: 16px;\n pointer-events: all;\n .ant-space-item {\n background-color: #f18b62;\n color: #fff;\n line-height: 16px;\n width: 16px;\n padding-left: 1px;\n }\n }\n }\n`;\n\ntype ComposedMenu = React.FC<any> & {\n Item?: React.FC<any>;\n URL?: React.FC<any>;\n SubMenu?: React.FC<any>;\n Designer?: React.FC<any>;\n};\n\nconst MenuModeContext = createContext(null);\n\nconst useSideMenuRef = () => {\n const schema = useFieldSchema();\n const scope = useContext(SchemaExpressionScopeContext);\n const scopeKey = schema?.['x-component-props']?.['sideMenuRefScopeKey'];\n if (!scopeKey) {\n return;\n }\n return scope[scopeKey];\n};\n\nconst MenuItemDesignerContext = createContext(null);\n\nexport const Menu: ComposedMenu = observer((props) => {\n let {\n onSelect,\n mode,\n selectedUid,\n defaultSelectedUid,\n sideMenuRefScopeKey,\n defaultSelectedKeys: dSelectedKeys,\n defaultOpenKeys: dOpenKeys,\n ...others\n } = useProps(props);\n const { t } = useTranslation();\n const Designer = useDesigner();\n const schema = useFieldSchema();\n const { refresh } = useDesignable();\n const api = useAPIClient();\n const { render } = useSchemaInitializer(schema['x-initializer']);\n const sideMenuRef = useSideMenuRef();\n const [defaultSelectedKeys, setDefaultSelectedKeys] = useState(() => {\n if (dSelectedKeys) {\n return dSelectedKeys;\n }\n if (defaultSelectedUid) {\n return findKeysByUid(schema, defaultSelectedUid);\n }\n return [];\n });\n const [loading, setLoading] = useState(false);\n const [defaultOpenKeys, setDefaultOpenKeys] = useState(() => {\n if (['inline', 'mix'].includes(mode)) {\n return dOpenKeys || defaultSelectedKeys;\n }\n return dOpenKeys;\n });\n const [sideMenuSchema, setSideMenuSchema] = useState<Schema>(() => {\n const key = defaultSelectedKeys?.[0] || null;\n if (mode === 'mix' && key) {\n const s = schema.properties?.[key];\n if (s['x-component'] === 'Menu.SubMenu') {\n return s;\n }\n }\n return null;\n });\n useEffect(() => {\n const keys = findKeysByUid(schema, selectedUid);\n setDefaultSelectedKeys(keys);\n if (['inline', 'mix'].includes(mode)) {\n setDefaultOpenKeys(dOpenKeys || keys);\n }\n const key = keys?.[0] || null;\n if (mode === 'mix') {\n if (key) {\n const s = schema.properties?.[key];\n if (s['x-component'] === 'Menu.SubMenu') {\n setSideMenuSchema(s);\n }\n } else {\n setSideMenuSchema(null);\n }\n }\n }, [selectedUid]);\n useEffect(() => {\n if (['inline', 'mix'].includes(mode)) {\n setDefaultOpenKeys(defaultSelectedKeys);\n }\n }, [defaultSelectedKeys]);\n useEffect(() => {\n const sideMenuElement = sideMenuRef?.current as HTMLElement;\n if (!sideMenuElement) {\n return;\n }\n sideMenuElement.style.display = sideMenuSchema?.['x-component'] === 'Menu.SubMenu' ? 'block' : 'none';\n }, [sideMenuSchema?.name, sideMenuRef]);\n const { designable } = useDesignable();\n return (\n <DndContext>\n <MenuItemDesignerContext.Provider value={Designer}>\n <MenuModeContext.Provider value={mode}>\n <AntdMenu\n {...others}\n style={\n {\n // width: mode === 'mix' ? '100%' : undefined,\n }\n }\n className={css`\n .ant-menu-item:hover {\n > .ant-menu-title-content > div {\n .general-schema-designer {\n display: block;\n }\n }\n }\n `}\n onSelect={(info: any) => {\n const s = schema.properties[info.key];\n if (mode === 'mix') {\n setSideMenuSchema(s);\n if (s['x-component'] !== 'Menu.SubMenu') {\n onSelect && onSelect(info);\n } else {\n const menuItemSchema = findMenuItem(s);\n if (!menuItemSchema) {\n return;\n }\n // TODO\n setLoading(true);\n const keys = findKeysByUid(schema, menuItemSchema['x-uid']);\n setDefaultSelectedKeys(keys);\n setTimeout(() => {\n setLoading(false);\n }, 100);\n onSelect &&\n onSelect({\n key: menuItemSchema.name,\n item: {\n props: {\n schema: menuItemSchema,\n },\n },\n });\n }\n } else {\n onSelect && onSelect(info);\n }\n }}\n mode={mode === 'mix' ? 'horizontal' : mode}\n openKeys={defaultOpenKeys}\n selectedKeys={defaultSelectedKeys}\n >\n {designable && (\n <AntdMenu.Item disabled style={{ padding: '0 8px', order: 9999 }}>\n {render({ style: { background: 'none' } })}\n </AntdMenu.Item>\n )}\n {props.children}\n </AntdMenu>\n {loading\n ? null\n : mode === 'mix' &&\n sideMenuSchema?.['x-component'] === 'Menu.SubMenu' &&\n sideMenuRef?.current?.firstChild &&\n createPortal(\n <MenuModeContext.Provider value={'inline'}>\n <AntdMenu\n mode={'inline'}\n defaultOpenKeys={defaultOpenKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n onSelect={(info) => {\n onSelect && onSelect(info);\n }}\n className={css`\n .ant-menu-item {\n > .ant-menu-title-content {\n margin-left: -24px;\n margin-right: -16px;\n padding: 0 16px 0 24px;\n > div {\n > .general-schema-designer {\n right: 6px !important;\n }\n }\n }\n }\n .ant-menu-submenu-title {\n .ant-menu-title-content {\n margin-left: -24px;\n margin-right: -34px;\n padding: 0 34px 0 24px;\n > div {\n > .general-schema-designer {\n right: 6px !important;\n }\n > span.anticon {\n margin-right: 10px;\n }\n }\n }\n }\n `}\n >\n <RecursionField schema={sideMenuSchema} onlyRenderProperties />\n {render({\n style: { margin: 8 },\n insert: (s) => {\n const dn = createDesignable({\n t,\n api,\n refresh,\n current: sideMenuSchema,\n });\n dn.loadAPIClientEvents();\n dn.insertAdjacent('beforeEnd', s);\n },\n })}\n </AntdMenu>\n </MenuModeContext.Provider>,\n sideMenuRef.current.firstChild,\n )}\n </MenuModeContext.Provider>\n </MenuItemDesignerContext.Provider>\n </DndContext>\n );\n});\n\nMenu.Item = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const Designer = useContext(MenuItemDesignerContext);\n return (\n <AntdMenu.Item {...others} key={schema.name} eventKey={schema.name} schema={schema}>\n <SortableItem className={designerCss}>\n <Icon type={icon} />\n <span\n className={css`\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n width: 100%;\n vertical-align: middle;\n `}\n >\n {field.title}\n </span>\n <Designer />\n </SortableItem>\n </AntdMenu.Item>\n );\n});\n\nMenu.URL = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const Designer = useContext(MenuItemDesignerContext);\n return (\n <AntdMenu.Item\n {...others}\n key={schema.name}\n eventKey={schema.name}\n schema={schema}\n onClick={() => {\n window.open(props.href, '_blank');\n }}\n >\n <SortableItem className={designerCss}>\n <Icon type={icon} />\n {field.title}\n <Designer />\n </SortableItem>\n </AntdMenu.Item>\n );\n});\n\nMenu.SubMenu = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const mode = useContext(MenuModeContext);\n const Designer = useContext(MenuItemDesignerContext);\n if (mode === 'mix') {\n return <Menu.Item {...props} />;\n }\n return (\n <AntdMenu.SubMenu\n {...others}\n key={schema.name}\n eventKey={schema.name}\n title={\n <SortableItem className={subMenuDesignerCss}>\n <Icon type={icon} />\n {field.title}\n <Designer />\n </SortableItem>\n }\n >\n <RecursionField schema={schema} onlyRenderProperties />\n </AntdMenu.SubMenu>\n );\n});\n\nMenu.Designer = MenuDesigner;\n"]}
|
|
1
|
+
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../../src/schema-component/antd/menu/Menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { css } from '@emotion/css';\nimport {\n observer,\n RecursionField,\n Schema,\n SchemaExpressionScopeContext,\n useField,\n useFieldSchema\n} from '@formily/react';\nimport { Menu as AntdMenu } from 'antd';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport { createDesignable, DndContext, SortableItem, useDesignable, useDesigner } from '../..';\nimport { Icon, useAPIClient, useSchemaInitializer } from '../../../';\nimport { useProps } from '../../hooks/useProps';\nimport { MenuDesigner } from './Menu.Designer';\nimport { findKeysByUid, findMenuItem } from './util';\n\nconst subMenuDesignerCss = css`\n position: relative;\n display: inline-block;\n margin-left: -24px;\n margin-right: -34px;\n padding: 0 34px 0 24px;\n width: calc(100% + 58px);\n &:hover {\n > .general-schema-designer {\n display: block;\n }\n }\n &.nb-action-link {\n > .general-schema-designer {\n top: -10px;\n bottom: -10px;\n left: -10px;\n right: -10px;\n }\n }\n > .general-schema-designer {\n position: absolute;\n z-index: 999;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: none;\n background: rgba(241, 139, 98, 0.06);\n border: 0;\n pointer-events: none;\n > .general-schema-designer-icons {\n position: absolute;\n right: 2px;\n top: 2px;\n line-height: 16px;\n pointer-events: all;\n .ant-space-item {\n background-color: #f18b62;\n color: #fff;\n line-height: 16px;\n width: 16px;\n padding-left: 1px;\n }\n }\n }\n`;\n\nconst designerCss = css`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: -20px;\n margin-right: -20px;\n padding: 0 20px;\n width: calc(100% + 40px);\n &:hover {\n > .general-schema-designer {\n display: block;\n }\n }\n &.nb-action-link {\n > .general-schema-designer {\n top: -10px;\n bottom: -10px;\n left: -10px;\n right: -10px;\n }\n }\n > .general-schema-designer {\n position: absolute;\n z-index: 999;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: none;\n background: rgba(241, 139, 98, 0.06);\n border: 0;\n pointer-events: none;\n > .general-schema-designer-icons {\n position: absolute;\n right: 2px;\n top: 2px;\n line-height: 16px;\n pointer-events: all;\n .ant-space-item {\n background-color: #f18b62;\n color: #fff;\n line-height: 16px;\n width: 16px;\n padding-left: 1px;\n }\n }\n }\n`;\n\ntype ComposedMenu = React.FC<any> & {\n Item?: React.FC<any>;\n URL?: React.FC<any>;\n SubMenu?: React.FC<any>;\n Designer?: React.FC<any>;\n};\n\nconst MenuModeContext = createContext(null);\n\nconst useSideMenuRef = () => {\n const schema = useFieldSchema();\n const scope = useContext(SchemaExpressionScopeContext);\n const scopeKey = schema?.['x-component-props']?.['sideMenuRefScopeKey'];\n if (!scopeKey) {\n return;\n }\n return scope[scopeKey];\n};\n\nconst MenuItemDesignerContext = createContext(null);\n\nexport const Menu: ComposedMenu = observer((props) => {\n let {\n onSelect,\n mode,\n selectedUid,\n defaultSelectedUid,\n sideMenuRefScopeKey,\n defaultSelectedKeys: dSelectedKeys,\n defaultOpenKeys: dOpenKeys,\n ...others\n } = useProps(props);\n const { t } = useTranslation();\n const Designer = useDesigner();\n const schema = useFieldSchema();\n const { refresh } = useDesignable();\n const api = useAPIClient();\n const { render } = useSchemaInitializer(schema['x-initializer']);\n const sideMenuRef = useSideMenuRef();\n const [defaultSelectedKeys, setDefaultSelectedKeys] = useState(() => {\n if (dSelectedKeys) {\n return dSelectedKeys;\n }\n if (defaultSelectedUid) {\n return findKeysByUid(schema, defaultSelectedUid);\n }\n return [];\n });\n const [loading, setLoading] = useState(false);\n const [defaultOpenKeys, setDefaultOpenKeys] = useState(() => {\n if (['inline', 'mix'].includes(mode)) {\n return dOpenKeys || defaultSelectedKeys;\n }\n return dOpenKeys;\n });\n const [sideMenuSchema, setSideMenuSchema] = useState<Schema>(() => {\n const key = defaultSelectedKeys?.[0] || null;\n if (mode === 'mix' && key) {\n const s = schema.properties?.[key];\n if (s['x-component'] === 'Menu.SubMenu') {\n return s;\n }\n }\n return null;\n });\n useEffect(() => {\n const keys = findKeysByUid(schema, selectedUid);\n setDefaultSelectedKeys(keys);\n if (['inline', 'mix'].includes(mode)) {\n setDefaultOpenKeys(dOpenKeys || keys);\n }\n const key = keys?.[0] || null;\n if (mode === 'mix') {\n if (key) {\n const s = schema.properties?.[key];\n if (s['x-component'] === 'Menu.SubMenu') {\n setSideMenuSchema(s);\n }\n } else {\n setSideMenuSchema(null);\n }\n }\n }, [selectedUid]);\n useEffect(() => {\n if (['inline', 'mix'].includes(mode)) {\n setDefaultOpenKeys(defaultSelectedKeys);\n }\n }, [defaultSelectedKeys]);\n useEffect(() => {\n const sideMenuElement = sideMenuRef?.current as HTMLElement;\n if (!sideMenuElement) {\n return;\n }\n sideMenuElement.style.display = sideMenuSchema?.['x-component'] === 'Menu.SubMenu' ? 'block' : 'none';\n }, [sideMenuSchema?.name, sideMenuRef]);\n const { designable } = useDesignable();\n return (\n <DndContext>\n <MenuItemDesignerContext.Provider value={Designer}>\n <MenuModeContext.Provider value={mode}>\n <AntdMenu\n {...others}\n style={\n {\n // width: mode === 'mix' ? '100%' : undefined,\n }\n }\n className={css`\n .ant-menu-item:hover {\n > .ant-menu-title-content > div {\n .general-schema-designer {\n display: block;\n }\n }\n }\n `}\n onSelect={(info: any) => {\n const s = schema.properties[info.key];\n if (mode === 'mix') {\n setSideMenuSchema(s);\n if (s['x-component'] !== 'Menu.SubMenu') {\n onSelect && onSelect(info);\n } else {\n const menuItemSchema = findMenuItem(s);\n if (!menuItemSchema) {\n return;\n }\n // TODO\n setLoading(true);\n const keys = findKeysByUid(schema, menuItemSchema['x-uid']);\n setDefaultSelectedKeys(keys);\n setTimeout(() => {\n setLoading(false);\n }, 100);\n onSelect &&\n onSelect({\n key: menuItemSchema.name,\n item: {\n props: {\n schema: menuItemSchema,\n },\n },\n });\n }\n } else {\n onSelect && onSelect(info);\n }\n }}\n mode={mode === 'mix' ? 'horizontal' : mode}\n defaultOpenKeys={defaultOpenKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n selectedKeys={defaultSelectedKeys}\n >\n {designable && (\n <AntdMenu.Item disabled style={{ padding: '0 8px', order: 9999 }}>\n {render({ style: { background: 'none' } })}\n </AntdMenu.Item>\n )}\n {props.children}\n </AntdMenu>\n {loading\n ? null\n : mode === 'mix' &&\n sideMenuSchema?.['x-component'] === 'Menu.SubMenu' &&\n sideMenuRef?.current?.firstChild &&\n createPortal(\n <MenuModeContext.Provider value={'inline'}>\n <AntdMenu\n mode={'inline'}\n defaultOpenKeys={defaultOpenKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n onSelect={(info) => {\n onSelect && onSelect(info);\n }}\n className={css`\n .ant-menu-item {\n > .ant-menu-title-content {\n margin-left: -24px;\n margin-right: -16px;\n padding: 0 16px 0 24px;\n > div {\n > .general-schema-designer {\n right: 6px !important;\n }\n }\n }\n }\n .ant-menu-submenu-title {\n .ant-menu-title-content {\n margin-left: -24px;\n margin-right: -34px;\n padding: 0 34px 0 24px;\n > div {\n > .general-schema-designer {\n right: 6px !important;\n }\n > span.anticon {\n margin-right: 10px;\n }\n }\n }\n }\n `}\n >\n <RecursionField schema={sideMenuSchema} onlyRenderProperties />\n {render({\n style: { margin: 8 },\n insert: (s) => {\n const dn = createDesignable({\n t,\n api,\n refresh,\n current: sideMenuSchema,\n });\n dn.loadAPIClientEvents();\n dn.insertAdjacent('beforeEnd', s);\n },\n })}\n </AntdMenu>\n </MenuModeContext.Provider>,\n sideMenuRef.current.firstChild,\n )}\n </MenuModeContext.Provider>\n </MenuItemDesignerContext.Provider>\n </DndContext>\n );\n});\n\nMenu.Item = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const Designer = useContext(MenuItemDesignerContext);\n return (\n <AntdMenu.Item {...others} key={schema.name} eventKey={schema.name} schema={schema}>\n <SortableItem className={designerCss}>\n <Icon type={icon} />\n <span\n className={css`\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n width: 100%;\n vertical-align: middle;\n `}\n >\n {field.title}\n </span>\n <Designer />\n </SortableItem>\n </AntdMenu.Item>\n );\n});\n\nMenu.URL = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const Designer = useContext(MenuItemDesignerContext);\n return (\n <AntdMenu.Item\n {...others}\n key={schema.name}\n eventKey={schema.name}\n schema={schema}\n onClick={() => {\n window.open(props.href, '_blank');\n }}\n >\n <SortableItem className={designerCss}>\n <Icon type={icon} />\n {field.title}\n <Designer />\n </SortableItem>\n </AntdMenu.Item>\n );\n});\n\nMenu.SubMenu = observer((props) => {\n const { icon, ...others } = props;\n const schema = useFieldSchema();\n const field = useField();\n const mode = useContext(MenuModeContext);\n const Designer = useContext(MenuItemDesignerContext);\n if (mode === 'mix') {\n return <Menu.Item {...props} />;\n }\n return (\n <AntdMenu.SubMenu\n {...others}\n key={schema.name}\n eventKey={schema.name}\n title={\n <SortableItem className={subMenuDesignerCss}>\n <Icon type={icon} />\n {field.title}\n <Designer />\n </SortableItem>\n }\n >\n <RecursionField schema={schema} onlyRenderProperties />\n </AntdMenu.SubMenu>\n );\n});\n\nMenu.Designer = MenuDesigner;\n"]}
|
|
@@ -124,7 +124,7 @@ export declare const BlockInitializers: {
|
|
|
124
124
|
};
|
|
125
125
|
};
|
|
126
126
|
};
|
|
127
|
-
items:
|
|
127
|
+
items: {
|
|
128
128
|
key: string;
|
|
129
129
|
type: string;
|
|
130
130
|
title: string;
|
|
@@ -134,14 +134,5 @@ export declare const BlockInitializers: {
|
|
|
134
134
|
title: string;
|
|
135
135
|
component: string;
|
|
136
136
|
}[];
|
|
137
|
-
}
|
|
138
|
-
type: string;
|
|
139
|
-
title: string;
|
|
140
|
-
children: {
|
|
141
|
-
type: string;
|
|
142
|
-
title: string;
|
|
143
|
-
component: string;
|
|
144
|
-
}[];
|
|
145
|
-
key?: undefined;
|
|
146
|
-
})[];
|
|
137
|
+
}[];
|
|
147
138
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockInitializers.js","sourceRoot":"","sources":["../../../src/schema-initializer/buttons/BlockInitializers.tsx"],"names":[],"mappings":";;;AAAA,kCAA0C;AAE1C,UAAU;AACG,QAAA,iBAAiB,GAAG;IAC/B,KAAK,EAAE,oBAAoB;IAC3B,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,sBAAc;IACpB,KAAK,EAAE;QACL;YACE,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,OAAO;oBACZ,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,gBAAgB;oBACvB,SAAS,EAAE,uBAAuB;iBACnC;gBACD;oBACE,GAAG,EAAE,MAAM;oBACX,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,eAAe;oBACtB,SAAS,EAAE,sBAAsB;iBAClC;gBACD;oBACE,GAAG,EAAE,SAAS;oBACd,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,kBAAkB;oBACzB,SAAS,EAAE,yBAAyB;iBACrC;gBACD;oBACE,GAAG,EAAE,UAAU;oBACf,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,0BAA0B;iBACtC;gBACD;oBACE,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,iBAAiB;oBACxB,SAAS,EAAE,wBAAwB;iBACpC;aACF;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,gBAAgB;YACvB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF;KACF;CACF,CAAC","sourcesContent":["import { gridRowColWrap } from '../utils';\n\n// 页面里添加区块\nexport const BlockInitializers = {\n title: '{{t(\"Add block\")}}',\n icon: 'PlusOutlined',\n wrap: gridRowColWrap,\n items: [\n {\n key: 'dataBlocks',\n type: 'itemGroup',\n title: 'Data blocks',\n children: [\n {\n key: 'table',\n type: 'item',\n title: '{{t(\"Table\")}}',\n component: 'TableBlockInitializer',\n },\n {\n key: 'form',\n type: 'item',\n title: '{{t(\"Form\")}}',\n component: 'FormBlockInitializer',\n },\n {\n key: 'details',\n type: 'item',\n title: '{{t(\"Details\")}}',\n component: 'DetailsBlockInitializer',\n },\n {\n key: 'calendar',\n type: 'item',\n title: '{{t(\"Calendar\")}}',\n component: 'CalendarBlockInitializer',\n },\n {\n key: 'kanban',\n type: 'item',\n title: '{{t(\"Kanban\")}}',\n component: 'KanbanBlockInitializer',\n },\n ],\n },\n {\n type: 'itemGroup',\n title: '{{t(\"Media\")}}',\n children: [\n {\n type: 'item',\n title: '{{t(\"Markdown\")}}',\n component: 'MarkdownBlockInitializer',\n },\n ],\n },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"file":"BlockInitializers.js","sourceRoot":"","sources":["../../../src/schema-initializer/buttons/BlockInitializers.tsx"],"names":[],"mappings":";;;AAAA,kCAA0C;AAE1C,UAAU;AACG,QAAA,iBAAiB,GAAG;IAC/B,KAAK,EAAE,oBAAoB;IAC3B,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,sBAAc;IACpB,KAAK,EAAE;QACL;YACE,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,OAAO;oBACZ,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,gBAAgB;oBACvB,SAAS,EAAE,uBAAuB;iBACnC;gBACD;oBACE,GAAG,EAAE,MAAM;oBACX,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,eAAe;oBACtB,SAAS,EAAE,sBAAsB;iBAClC;gBACD;oBACE,GAAG,EAAE,SAAS;oBACd,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,kBAAkB;oBACzB,SAAS,EAAE,yBAAyB;iBACrC;gBACD;oBACE,GAAG,EAAE,UAAU;oBACf,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,0BAA0B;iBACtC;gBACD;oBACE,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,iBAAiB;oBACxB,SAAS,EAAE,wBAAwB;iBACpC;aACF;SACF;QACD;YACE,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,gBAAgB;YACvB,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,UAAU;oBACf,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,SAAS,EAAE,0BAA0B;iBACtC;aACF;SACF;KACF;CACF,CAAC","sourcesContent":["import { gridRowColWrap } from '../utils';\n\n// 页面里添加区块\nexport const BlockInitializers = {\n title: '{{t(\"Add block\")}}',\n icon: 'PlusOutlined',\n wrap: gridRowColWrap,\n items: [\n {\n key: 'dataBlocks',\n type: 'itemGroup',\n title: 'Data blocks',\n children: [\n {\n key: 'table',\n type: 'item',\n title: '{{t(\"Table\")}}',\n component: 'TableBlockInitializer',\n },\n {\n key: 'form',\n type: 'item',\n title: '{{t(\"Form\")}}',\n component: 'FormBlockInitializer',\n },\n {\n key: 'details',\n type: 'item',\n title: '{{t(\"Details\")}}',\n component: 'DetailsBlockInitializer',\n },\n {\n key: 'calendar',\n type: 'item',\n title: '{{t(\"Calendar\")}}',\n component: 'CalendarBlockInitializer',\n },\n {\n key: 'kanban',\n type: 'item',\n title: '{{t(\"Kanban\")}}',\n component: 'KanbanBlockInitializer',\n },\n ],\n },\n {\n key: 'media',\n type: 'itemGroup',\n title: '{{t(\"Media\")}}',\n children: [\n {\n key: 'markdown',\n type: 'item',\n title: '{{t(\"Markdown\")}}',\n component: 'MarkdownBlockInitializer',\n },\n ],\n },\n ],\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/client",
|
|
3
|
-
"version": "0.7.0-alpha.
|
|
3
|
+
"version": "0.7.0-alpha.7",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"licenses": [
|
|
6
6
|
{
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"@formily/antd": "^2.0.15",
|
|
30
30
|
"@formily/core": "^2.0.15",
|
|
31
31
|
"@formily/react": "^2.0.15",
|
|
32
|
-
"@nocobase/utils": "0.7.0-alpha.
|
|
32
|
+
"@nocobase/utils": "0.7.0-alpha.7",
|
|
33
33
|
"ahooks": "^3.0.5",
|
|
34
|
-
"antd": "
|
|
34
|
+
"antd": "~4.19.5",
|
|
35
35
|
"axios": "^0.24.0",
|
|
36
36
|
"classnames": "^2.3.1",
|
|
37
37
|
"file-saver": "^2.0.5",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"@types/marked": "^4.0.1",
|
|
67
67
|
"axios-mock-adapter": "^1.20.0"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "58b599aaec7ac28a536e6ba29b9990b05164a20b"
|
|
70
70
|
}
|
|
@@ -264,7 +264,8 @@ export const Menu: ComposedMenu = observer((props) => {
|
|
|
264
264
|
}
|
|
265
265
|
}}
|
|
266
266
|
mode={mode === 'mix' ? 'horizontal' : mode}
|
|
267
|
-
|
|
267
|
+
defaultOpenKeys={defaultOpenKeys}
|
|
268
|
+
defaultSelectedKeys={defaultSelectedKeys}
|
|
268
269
|
selectedKeys={defaultSelectedKeys}
|
|
269
270
|
>
|
|
270
271
|
{designable && (
|
|
@@ -44,10 +44,12 @@ export const BlockInitializers = {
|
|
|
44
44
|
],
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
|
+
key: 'media',
|
|
47
48
|
type: 'itemGroup',
|
|
48
49
|
title: '{{t("Media")}}',
|
|
49
50
|
children: [
|
|
50
51
|
{
|
|
52
|
+
key: 'markdown',
|
|
51
53
|
type: 'item',
|
|
52
54
|
title: '{{t("Markdown")}}',
|
|
53
55
|
component: 'MarkdownBlockInitializer',
|