diff --git a/packages/gi-assets-basic/src/components/ConciseContainer/Component.tsx b/packages/gi-assets-basic/src/components/ConciseContainer/Component.tsx
deleted file mode 100644
index e55b40be1..000000000
--- a/packages/gi-assets-basic/src/components/ConciseContainer/Component.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import React from 'react';
-import './index.less';
-
-const ConciseContainer = props => {
- const { children } = props;
- // const context = useContext();
- // const { config, assets, HAS_GRAPH } = context;
-
- /**
- * hack start
- *
- * 不应该修改 registerMeta 原有的containers 数据结构
- * 1. 先把追加的 GI_FreeContainer 移除
- * 2. 把 GI_CONTAINER 中的 数组对象 改为字符串
- *
- * TODO:
- * 需要在gi-site层修改这个containers的值
- *
- */
- // const containers = props.containers.slice(0, -1).map(item => {
- // return {
- // ...item,
- // GI_CONTAINER: item.GI_CONTAINER.map(item => item.value),
- // };
- // });
- /** hack end */
-
- // const Containers = useContainer(context, containers);
-
- // const [header, panel] = Containers;
- // console.log('containers', containers, Containers);
-
- return
{children}
;
-};
-
-export default ConciseContainer;
diff --git a/packages/gi-assets-basic/src/components/ConciseContainer/index.less b/packages/gi-assets-basic/src/components/ConciseContainer/index.less
deleted file mode 100644
index 7d985f073..000000000
--- a/packages/gi-assets-basic/src/components/ConciseContainer/index.less
+++ /dev/null
@@ -1,34 +0,0 @@
-@panel-width: 600px;
-.gi-xlab {
- position: absolute;
- top: 0px;
- right: 0px;
- bottom: 0px;
- left: 0px;
- display: block;
- .xlab-header {
- top: 0px;
- right: 0px;
- left: 0px;
- flex: 80px;
- height: 80px;
- padding: 8px;
- line-height: 80px;
- background: green;
- }
- .xlab-canvas {
- position: absolute;
- top: 100px;
- right: @panel-width;
- bottom: 0px;
- left: 0px;
- }
- .xlab-properties {
- position: absolute;
- top: 100px;
- right: 0px;
- bottom: 0px;
- width: @panel-width;
- background: blueviolet;
- }
-}
diff --git a/packages/gi-assets-basic/src/components/ConciseContainer/registerMeta.ts b/packages/gi-assets-basic/src/components/ConciseContainer/registerMeta.ts
deleted file mode 100644
index 6dbf8abb8..000000000
--- a/packages/gi-assets-basic/src/components/ConciseContainer/registerMeta.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-const registerMeta = context => {
- const { GIAC_CONTENT_ITEMS } = context;
- return {
- // containers: [
- // {
- // id: 'GI_CONTAINER_SIDE',
- // name: $i18n.get({ id: 'basic.components.SegmentedLayout.registerMeta.SideContainer', dm: '侧边容器' }),
- // required: true,
- // GI_CONTAINER: {
- // title: $i18n.get({
- // id: 'basic.components.SegmentedLayout.registerMeta.IntegratedComponents',
- // dm: '集成组件',
- // }),
- // type: 'string',
- // 'x-decorator': 'FormItem',
- // 'x-component': 'Select',
- // 'x-component-props': {
- // mode: 'multiple',
- // },
- // enum: GIAC_CONTENT_ITEMS,
- // default: [],
- // },
- // },
- // ],
- };
-};
-export default registerMeta;
diff --git a/packages/gi-assets-basic/src/components/RichContainer/Component.tsx b/packages/gi-assets-basic/src/components/RichContainer/Component.tsx
new file mode 100644
index 000000000..7c56a8d72
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/RichContainer/Component.tsx
@@ -0,0 +1,26 @@
+import { useContainer, useContext } from '@antv/gi-sdk';
+import React from 'react';
+import './index.less';
+
+const ConciseContainer = props => {
+ const { children } = props;
+ const context = useContext();
+ const { config, assets, HAS_GRAPH } = context;
+ const Containers = useContainer(context);
+
+ const [NavbarArea, ViewArea, DataArea, StylingArea, CanvasArea] = Containers;
+ console.log('containers', Containers);
+
+ return (
+
+
{NavbarArea.children.map(item => item.component)}
+
,,,,,,
+
+
+ );
+};
+
+export default ConciseContainer;
diff --git a/packages/gi-assets-basic/src/components/RichContainer/index.less b/packages/gi-assets-basic/src/components/RichContainer/index.less
new file mode 100644
index 000000000..c8851e246
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/RichContainer/index.less
@@ -0,0 +1,43 @@
+@panel-width: 600px;
+.gi-rich-container {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ bottom: 0px;
+ left: 0px;
+ display: block;
+
+ .gi-rich-container-navbar {
+ position: relative;
+ height: 54px;
+ width: 100%;
+ background: green;
+ }
+ .gi-rich-container-toolbar {
+ position: relative;
+ height: 44px;
+ width: 100%;
+ background: #f3f5f9;
+ border-bottom: 1px solid #ddd;
+ }
+ .gi-rich-container-content {
+ position: absolute;
+ bottom: 0px;
+ top: 98px;
+ left: 0px;
+ right: 0px;
+ display: flex;
+ .gi-rich-container-side {
+ width: 400px;
+ height: 100%;
+ background: #f3f5f9;
+ }
+ .gi-rich-container-canvas {
+ position: absolute;
+ top: 0px;
+ bottom: 0px;
+ left: 400px;
+ right: 0px;
+ }
+ }
+}
diff --git a/packages/gi-assets-basic/src/components/ConciseContainer/index.tsx b/packages/gi-assets-basic/src/components/RichContainer/index.tsx
similarity index 100%
rename from packages/gi-assets-basic/src/components/ConciseContainer/index.tsx
rename to packages/gi-assets-basic/src/components/RichContainer/index.tsx
diff --git a/packages/gi-assets-basic/src/components/ConciseContainer/info.ts b/packages/gi-assets-basic/src/components/RichContainer/info.ts
similarity index 66%
rename from packages/gi-assets-basic/src/components/ConciseContainer/info.ts
rename to packages/gi-assets-basic/src/components/RichContainer/info.ts
index 12f6d56b9..6e3506bf5 100644
--- a/packages/gi-assets-basic/src/components/ConciseContainer/info.ts
+++ b/packages/gi-assets-basic/src/components/RichContainer/info.ts
@@ -1,7 +1,7 @@
const info = {
- id: 'ConciseContainer',
- name: '极简布局',
- desc: '极简布局',
+ id: 'RichContainer',
+ name: '中台布局',
+ desc: '中台布局',
cover: 'http://xxx.jpg',
category: 'system-interaction',
icon: 'icon-home',
diff --git a/packages/gi-assets-basic/src/components/RichContainer/registerMeta.ts b/packages/gi-assets-basic/src/components/RichContainer/registerMeta.ts
new file mode 100644
index 000000000..c1c52741d
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/RichContainer/registerMeta.ts
@@ -0,0 +1,88 @@
+const registerMeta = context => {
+ const { GIAC_CONTENT_ITEMS = [], GIAC_ITEMS = [] } = context;
+ return {
+ containers: [
+ {
+ id: 'navbar',
+ name: '顶部导航',
+ required: true,
+ GI_CONTAINER: {
+ title: '集成组件',
+ type: 'string',
+ 'x-decorator': 'FormItem',
+ 'x-component': 'Select',
+ 'x-component-props': {
+ mode: 'multiple',
+ },
+ enum: GIAC_ITEMS,
+ default: [],
+ },
+ },
+ {
+ id: 'view-mode',
+ name: '模式展示',
+ required: true,
+ GI_CONTAINER: {
+ title: '集成组件',
+ type: 'string',
+ 'x-decorator': 'FormItem',
+ 'x-component': 'Select',
+ 'x-component-props': {
+ mode: 'multiple',
+ },
+ enum: GIAC_CONTENT_ITEMS,
+ default: [],
+ },
+ },
+ {
+ id: 'data-query',
+ name: '数据查询',
+ required: true,
+ GI_CONTAINER: {
+ title: '集成组件',
+ type: 'string',
+ 'x-decorator': 'FormItem',
+ 'x-component': 'Select',
+ 'x-component-props': {
+ mode: 'multiple',
+ },
+ enum: GIAC_CONTENT_ITEMS,
+ default: [],
+ },
+ },
+ {
+ id: 'canvas-operator',
+ name: '画布操作',
+ required: true,
+ GI_CONTAINER: {
+ title: '集成组件',
+ type: 'string',
+ 'x-decorator': 'FormItem',
+ 'x-component': 'Select',
+ 'x-component-props': {
+ mode: 'multiple',
+ },
+ enum: GIAC_ITEMS,
+ default: [],
+ },
+ },
+ {
+ id: 'styling-setting',
+ name: '布局样式',
+ required: true,
+ GI_CONTAINER: {
+ title: '集成组件',
+ type: 'string',
+ 'x-decorator': 'FormItem',
+ 'x-component': 'Select',
+ 'x-component-props': {
+ mode: 'multiple',
+ },
+ enum: GIAC_CONTENT_ITEMS,
+ default: [],
+ },
+ },
+ ],
+ };
+};
+export default registerMeta;
diff --git a/packages/gi-assets-basic/src/components/SideTabs.bak/CollapseContainer.tsx b/packages/gi-assets-basic/src/components/SideTabs.bak/CollapseContainer.tsx
new file mode 100644
index 000000000..d646c9e41
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/SideTabs.bak/CollapseContainer.tsx
@@ -0,0 +1,48 @@
+import { Handler } from '@antv/gi-common-components';
+import { utils } from '@antv/gi-sdk';
+import * as React from 'react';
+import type { ContainerProps } from './typing';
+
+const CollapseContainer: React.FunctionComponent = props => {
+ const { placement, offset, width, height, defaultVisible } = props;
+
+ const [state, setState] = React.useState({
+ visible: typeof defaultVisible === 'boolean' ? defaultVisible : true,
+ });
+
+ const handleToggle = () => {
+ setState(preState => {
+ return {
+ visible: !preState.visible,
+ };
+ });
+ };
+
+ const postionStyles = utils.getPositionStyles(placement, offset);
+
+ const baseStyle = {
+ ...postionStyles,
+ height,
+ width,
+ padding: '8px',
+ transition: 'all 0.3s ease',
+ overflow: 'visible',
+ };
+ const styles = state.visible ? baseStyle : { ...baseStyle, width: '0px', padding: '0' };
+
+ const { children } = props;
+ return (
+
+ );
+};
+export default CollapseContainer;
diff --git a/packages/gi-assets-basic/src/components/SideTabs.bak/Component.tsx b/packages/gi-assets-basic/src/components/SideTabs.bak/Component.tsx
new file mode 100755
index 000000000..7ed1c8ae4
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/SideTabs.bak/Component.tsx
@@ -0,0 +1,144 @@
+import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons';
+import { GIComponentAssets, GIComponentConfig } from '@antv/gi-sdk';
+import { Button, Tabs, Tooltip } from 'antd';
+import * as React from 'react';
+import ReactDOM from 'react-dom';
+import CollapseContainer from './CollapseContainer';
+import './index.less';
+import SideContainer from './SideContainer';
+import type { ContainerProps } from './typing';
+import WrapTab from './WrapTab';
+import $i18n from '../../i18n';
+const { TabPane } = Tabs;
+const defaultVisibleKey = 'side-tabs-default-visible';
+export interface SideTabsProps extends ContainerProps {
+ GI_CONTAINER: string[];
+ components: GIComponentConfig[];
+ assets: GIComponentAssets;
+ tabPosition: 'left' | 'right' | 'top' | 'bottom';
+ /**
+ * 是否在画布的外围
+ */
+ outSideFromCanvas: boolean;
+ flexDirection: 'row' | 'column';
+ GISDK_ID: string;
+}
+
+const SideTabs: React.FunctionComponent = props => {
+ const {
+ components,
+ assets,
+ placement,
+ offset,
+ width,
+ height,
+ defaultVisible,
+ outSideFromCanvas,
+ GISDK_ID,
+ tabPosition,
+ } = props;
+
+ // 独立 DOM 状态下是否可见
+ const [visible, setVisible] = React.useState(() => {
+ const defaultVisibleValue = localStorage.getItem(defaultVisibleKey);
+ if (defaultVisibleValue === null) {
+ return defaultVisible;
+ }
+ return defaultVisibleValue === 'true' ? true : false;
+ });
+
+ const sortedComponents = React.useMemo(() => {
+ return (
+ components
+ //@ts-ignore
+ .sort((a, b) => a.props.GI_CONTAINER_INDEX - b.props.GI_CONTAINER_INDEX)
+ .filter(item => item && item.props && item.props.GIAC_CONTENT)
+ );
+ }, [components]);
+
+ const panes = React.useMemo(() => {
+ return sortedComponents.map((item, index) => {
+ if (!item) {
+ console.warn(`config not found, index: ${index}`);
+ return null;
+ }
+ const { props: itemProps, id: itemId } = item;
+ const asset = assets[itemId];
+ if (!asset) {
+ console.warn(`asset: ${itemId} not found`);
+ return null;
+ }
+
+ const { component: Component } = asset;
+ return (
+ }>
+ {/* @ts-ignore */}
+
+
+ );
+ });
+ }, [sortedComponents]);
+
+ const toggleVisible = () => {
+ setVisible(preState => {
+ localStorage.setItem(defaultVisibleKey, String(!preState));
+ return !preState;
+ });
+ };
+
+ const tabBarExtraContent = (
+
+ : } onClick={toggleVisible} />
+
+ );
+
+ const Content = (
+
+
+ {panes}
+
+
+ );
+
+ if (!outSideFromCanvas) {
+ return (
+
+ {Content}
+
+ );
+ }
+ return ReactDOM.createPortal(
+
+ {Content}
+ ,
+ document.getElementById(`${GISDK_ID}-container`) as HTMLElement,
+ );
+};
+
+export default SideTabs;
diff --git a/packages/gi-assets-basic/src/components/SideTabs.bak/SideContainer.tsx b/packages/gi-assets-basic/src/components/SideTabs.bak/SideContainer.tsx
new file mode 100644
index 000000000..07e380177
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/SideTabs.bak/SideContainer.tsx
@@ -0,0 +1,171 @@
+import { useContext } from '@antv/gi-sdk';
+import React from 'react';
+export interface SideContainerProps {
+ width: string;
+ height: string;
+ children: any;
+ visible: boolean;
+ GISDK_ID: string;
+ outSideFromCanvas: boolean;
+ placement: string;
+ defaultVisible: boolean;
+}
+
+const SideContainer: React.FC = props => {
+ const { children, width, visible, GISDK_ID, outSideFromCanvas, placement, height } = props;
+ const { graph } = useContext();
+ const divRef = React.useRef(null);
+ React.useEffect(() => {
+ if (!outSideFromCanvas) return;
+ const canvasContainer = document.getElementById(''.concat(GISDK_ID, '-graphin-container')) as HTMLElement;
+ if (!canvasContainer) return;
+ function ontransitionend(event) {
+ if (!['right', 'left', 'top', 'bottom'].includes(event.propertyName)) {
+ return;
+ }
+ var canvas = graph.get('canvas');
+ if (canvas) {
+ graph.changeSize(canvasContainer.offsetWidth, canvasContainer.offsetHeight);
+ graph.autoPaint();
+ }
+ }
+ canvasContainer.addEventListener('transitionend', ontransitionend);
+ return () => {
+ canvasContainer.removeEventListener('transitionend', ontransitionend);
+ };
+ }, [outSideFromCanvas]);
+
+ React.useEffect(() => {
+ const container = document.getElementById(`${GISDK_ID}-container`) as HTMLDivElement;
+ const canvasContainer = document.getElementById(`${GISDK_ID}-graphin-container`) as HTMLDivElement;
+ const tabsContainer = divRef.current;
+ if (!tabsContainer) {
+ return;
+ }
+ // hard code
+ const tabsNav = document.querySelector('.gi-side-tabs .ant-tabs-nav-list') as HTMLDivElement;
+ if (container && tabsContainer && canvasContainer) {
+ const TabsWidth = visible ? width : `${tabsNav.offsetWidth || 50}px`;
+ const TabsHeight = visible ? height : `${tabsNav.offsetHeight || 350}px`;
+ /**
+ {
+ value: 'LT',
+ label: '左上 / top',
+ },
+ {
+ value: 'RT',
+ label: '右上 / right',
+ },
+ {
+ value: 'LB',
+ label: '左下 / left',
+ },
+ {
+ value: 'RB',
+ label: '右下 / bottom',
+ },
+ */
+ if (outSideFromCanvas) {
+ //container
+ container.style.position = 'relative';
+ canvasContainer.style.position = `absolute`;
+ canvasContainer.style.transition = 'all 0.3s ease';
+ tabsContainer.style.transition = 'all 0.3s ease';
+ // 左,右
+ if (placement === 'LB' || placement === 'RT') {
+ //CanvasContainer
+ canvasContainer.style.top = '0px';
+ canvasContainer.style.bottom = '0px';
+ canvasContainer.style.width = 'unset';
+ //tabsContainer
+ tabsContainer.style.position = 'absolute';
+ tabsContainer.style.top = '0px';
+ tabsContainer.style.bottom = '0px';
+ tabsContainer.style.width = TabsWidth;
+
+ if (placement === 'LB') {
+ // SideTabs
+ tabsContainer.style.left = '0px';
+ //CanvasContainer
+ canvasContainer.style.left = TabsWidth;
+ canvasContainer.style.right = '0px';
+ }
+ if (placement === 'RT') {
+ // SideTabs
+ tabsContainer.style.right = '0px';
+ //CanvasContainer
+ canvasContainer.style.left = '0px';
+ canvasContainer.style.right = TabsWidth;
+ }
+ }
+ // 下,上
+ if (placement === 'RB' || placement === 'LT') {
+ //CanvasContainer
+ canvasContainer.style.right = '0px';
+ canvasContainer.style.left = '0px';
+ canvasContainer.style.height = 'unset';
+
+ //tabsContainer
+ tabsContainer.style.position = 'absolute';
+ tabsContainer.style.left = '0px';
+ tabsContainer.style.right = '0px';
+ tabsContainer.style.height = TabsHeight;
+
+ if (placement === 'LT') {
+ // SideTabs
+ tabsContainer.style.top = '0px';
+ //CanvasContainer
+ canvasContainer.style.top = TabsHeight;
+ canvasContainer.style.bottom = '0px';
+ }
+ if (placement === 'RB') {
+ // SideTabs
+ tabsContainer.style.bottom = '0px';
+ //CanvasContainer
+ canvasContainer.style.top = '0px';
+ canvasContainer.style.bottom = TabsHeight;
+ }
+ }
+ } else {
+ container.className = '';
+ tabsContainer.className = '';
+ tabsContainer.style.width = 'unset';
+ tabsContainer.style.height = 'unset';
+ canvasContainer.style.left = 'unset';
+ canvasContainer.style.right = 'unset';
+ canvasContainer.style.transition = 'all 0.3s ease';
+ tabsContainer.style.transition = 'all 0.3s ease';
+ }
+ }
+ }, [graph, visible, outSideFromCanvas, placement]);
+
+ React.useEffect(() => {
+ const tabsContainer = divRef.current;
+ const canvasContainer = document.getElementById(`${GISDK_ID}-graphin-container`) as HTMLElement;
+ if (!tabsContainer) {
+ return;
+ }
+ return () => {
+ tabsContainer.style.width = 'unset';
+ tabsContainer.style.height = 'unset';
+ canvasContainer.style.left = 'unset';
+ canvasContainer.style.right = 'unset';
+ canvasContainer.style.top = 'unset';
+ canvasContainer.style.width = '100%';
+ canvasContainer.style.height = '100%';
+
+ tabsContainer.style.top = 'unset';
+ tabsContainer.style.bottom = 'unset';
+ tabsContainer.style.right = 'unset';
+ tabsContainer.style.left = 'unset';
+ };
+ }, [placement]);
+
+ return (
+
+ {children}
+
+ );
+};
+
+export default SideContainer;
diff --git a/packages/gi-assets-basic/src/components/SideTabs.bak/WrapTab.tsx b/packages/gi-assets-basic/src/components/SideTabs.bak/WrapTab.tsx
new file mode 100644
index 000000000..98e00510a
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/SideTabs.bak/WrapTab.tsx
@@ -0,0 +1,71 @@
+import { Icon } from '@antv/gi-sdk';
+import { Divider, Tooltip } from 'antd';
+import React from 'react';
+
+export interface GIContianerProps {
+ color: string;
+ hasDivider: boolean;
+ placement: 'LT' | 'RT' | 'LB' | 'RB';
+ offset: [number, number];
+}
+
+const POSITION_MAP = {
+ LT: 'top',
+ LB: 'left',
+ RT: 'right',
+ RB: 'bottom',
+};
+
+const WrapTooltip = props => {
+ const { title, isShowTooltip, tooltip, tooltipPlacement, tooltipColor, children } = props;
+ if (isShowTooltip) {
+ return (
+
+ {children}
+
+ );
+ }
+ return <>{children}>;
+};
+
+const WrapTab = ComponentProps => {
+ const { GIAC_CONTENT } = ComponentProps;
+ const {
+ tooltip,
+ tooltipColor,
+ tooltipPlacement,
+ hasDivider,
+ isShowTitle,
+ title,
+ isShowIcon,
+ icon,
+ isVertical,
+ isShowTooltip,
+ disabled,
+ } = GIAC_CONTENT;
+
+ const iconStyle = {
+ fontSize: '20px',
+ marginRight: isVertical ? '0px' : '12px',
+ };
+ return (
+ <>
+
+
+ {isShowIcon && }
+ {isVertical &&
}
+ {isShowTitle && title}
+
+ {hasDivider &&
}
+
+ >
+ );
+};
+
+export default WrapTab;
diff --git a/packages/gi-assets-basic/src/components/SideTabs.bak/index.less b/packages/gi-assets-basic/src/components/SideTabs.bak/index.less
new file mode 100755
index 000000000..8c20bc41c
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/SideTabs.bak/index.less
@@ -0,0 +1,59 @@
+.gi-side-tabs {
+ width: 100%;
+ height: 100%;
+ padding: 0px;
+ overflow: hidden;
+ border-right: 1px solid var(--border-color);
+ border-left: 1px solid var(--border-color);
+ .ant-tabs {
+ height: 100%;
+ }
+ .ant-tabs-tab {
+ justify-content: center;
+ margin-top: 0px;
+ padding: 8px 12px !important;
+ text-align: center;
+ }
+ .ant-tabs-left > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane,
+ .ant-tabs-left > div > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane {
+ height: 100%;
+ padding: 0px;
+ }
+ .ant-tabs-top > .ant-tabs-nav,
+ .ant-tabs-bottom > .ant-tabs-nav,
+ .ant-tabs-top > div > .ant-tabs-nav,
+ .ant-tabs-bottom > div > .ant-tabs-nav {
+ margin-bottom: 8px;
+ }
+ .ant-tabs-tabpane .ant-tabs-tabpane-active {
+ height: 100%;
+ }
+ .ant-tabs-content {
+ box-sizing: border-box;
+ height: 100%;
+ padding: 8px;
+ overflow-y: auto;
+ }
+}
+
+.gi-side-tabs-container {
+ background: var(--background-color);
+}
+// &.LB {
+// display: flex;
+// flex-direction: row;
+// }
+// &.LT {
+// display: flex;
+// flex-direction: row;
+// }
+// &.RT {
+// display: flex;
+// //独立DOM 布局情况下,不支持
+// // flex-direction: row-reverse;
+// }
+// &.RB {
+// display: flex;
+// //独立DOM 布局情况下,不支持
+// // flex-direction: column-reverse;
+// }
diff --git a/packages/gi-assets-basic/src/components/SideTabs.bak/index.md b/packages/gi-assets-basic/src/components/SideTabs.bak/index.md
new file mode 100755
index 000000000..53ed2df7c
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/SideTabs.bak/index.md
@@ -0,0 +1,17 @@
+## SideTabs 侧边栏容器
+
+```jsx
+import TestSDK, { Mock } from '@antv/gi-assets-testing';
+import * as React from 'react';
+import Asset from './index.tsx';
+
+const App = props => {
+ return (
+
+
+
+ );
+};
+
+export default App;
+```
diff --git a/packages/gi-assets-basic/src/components/SideTabs.bak/index.tsx b/packages/gi-assets-basic/src/components/SideTabs.bak/index.tsx
new file mode 100755
index 000000000..cd1d3cfd0
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/SideTabs.bak/index.tsx
@@ -0,0 +1,23 @@
+import Component from './Component';
+import registerMeta from './registerMeta';
+
+/** index.md 中解析得到默认值,也可用户手动修改 */ import $i18n from '../../i18n';
+const info = {
+ id: 'SideTabs',
+ name: $i18n.get({ id: 'basic.components.SideTabs.Sidebar', dm: '侧边栏' }),
+ desc: $i18n.get({
+ id: 'basic.components.SideTabs.CanvasSideNavigationBarWhich',
+ dm: '画布侧边导航栏,可集成分析组件',
+ }),
+ icon: 'icon-sidebar',
+ cover: 'http://xxxx.jpg',
+ category: 'container-components',
+ type: 'GICC',
+ docs: 'https://www.yuque.com/antv/gi/to65w8',
+};
+
+export default {
+ info,
+ component: Component,
+ registerMeta,
+};
diff --git a/packages/gi-assets-basic/src/components/SideTabs.bak/registerMeta.ts b/packages/gi-assets-basic/src/components/SideTabs.bak/registerMeta.ts
new file mode 100755
index 000000000..f2267b7d2
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/SideTabs.bak/registerMeta.ts
@@ -0,0 +1,59 @@
+import { extra } from '@antv/gi-sdk';
+import $i18n from '../../i18n';
+const { deepClone, GI_CONTAINER_METAS } = extra;
+const metas = deepClone(GI_CONTAINER_METAS);
+
+metas.placement.default = 'LB';
+metas.height.default = '400px';
+metas.width.default = '400px';
+
+const registerMeta = context => {
+ const { GIAC_CONTENT_ITEMS = [] } = context;
+
+ const schema = {
+ GI_CONTAINER: {
+ title: $i18n.get({ id: 'basic.components.SideTabs.registerMeta.IntegratedComponents', dm: '集成组件' }),
+ type: 'string',
+ 'x-decorator': 'FormItem',
+ 'x-component': 'Select',
+ 'x-component-props': {
+ mode: 'multiple',
+ },
+ enum: GIAC_CONTENT_ITEMS,
+ default: [],
+ },
+ outSideFromCanvas: {
+ title: $i18n.get({ id: 'basic.components.SideTabs.registerMeta.IndependentDom', dm: '独立DOM' }),
+ type: 'boolean',
+ 'x-decorator': 'FormItem',
+ 'x-component': 'Switch',
+ default: true,
+ },
+ tabPosition: {
+ title: $i18n.get({ id: 'basic.components.SideTabs.registerMeta.NavigationLayout', dm: '导航布局' }),
+ type: 'string',
+ 'x-decorator': 'FormItem',
+ 'x-component': 'Select',
+ enum: [
+ { label: 'left', value: 'left' },
+ { label: 'right', value: 'right' },
+ { label: 'top', value: 'top' },
+ { label: 'bottom', value: 'bottom' },
+ ],
+
+ default: 'left',
+ },
+ defaultVisible: {
+ title: $i18n.get({ id: 'basic.components.SideTabs.registerMeta.DefaultExpansion', dm: '默认展开' }),
+ type: 'boolean',
+ 'x-decorator': 'FormItem',
+ 'x-component': 'Switch',
+ default: true,
+ },
+ ...metas,
+ };
+
+ return schema;
+};
+
+export default registerMeta;
diff --git a/packages/gi-assets-basic/src/components/SideTabs.bak/typing.ts b/packages/gi-assets-basic/src/components/SideTabs.bak/typing.ts
new file mode 100644
index 000000000..febbbf470
--- /dev/null
+++ b/packages/gi-assets-basic/src/components/SideTabs.bak/typing.ts
@@ -0,0 +1,8 @@
+export interface ContainerProps {
+ // LB 左,RT 右,LT 上,RB 下
+ placement: 'LT' | 'LB' | 'RT' | 'RB';
+ offset: number[];
+ width: string;
+ height: string;
+ defaultVisible: boolean;
+}
diff --git a/packages/gi-assets-basic/src/components/index.tsx b/packages/gi-assets-basic/src/components/index.tsx
index a7e4ade55..3a10918aa 100755
--- a/packages/gi-assets-basic/src/components/index.tsx
+++ b/packages/gi-assets-basic/src/components/index.tsx
@@ -28,7 +28,6 @@ import Tooltip from './Tooltip';
// import ContentContainer from './ContentContainer';
import ChartAnalysis from './ChartAnalysis';
import CommonNeighbor from './CommonNeighbor';
-import ConciseContainer from './ConciseContainer';
import ForceSimulation from './ForceSimulation';
import GroupBar from './GroupBar';
import Initializer from './Initializer';
@@ -37,6 +36,7 @@ import Overview from './OverView';
import PinNodeWithMenu from './PinNodeWithMenu';
import PropertyGraphInitializer from './PropertyGraphInitializer';
import RemoveNodeWithMenu from './RemoveNodeWithMenu';
+import RichContainer from './RichContainer';
import SankeyAnalysis from './Sankey';
import SegmentedLayout from './SegmentedLayout';
import SelectExchangeMenuItem from './SelectExchangeMenuItem';
@@ -58,7 +58,6 @@ export {
// TooltipForEdge, //体验问题,暂不放开
ClearCanvas,
CommonNeighbor,
- ConciseContainer,
ContextMenu,
Copyright,
DownLoad,
@@ -88,6 +87,7 @@ export {
PropertiesPanel,
PropertyGraphInitializer,
RemoveNodeWithMenu,
+ RichContainer,
SankeyAnalysis,
Save,
SegmentedLayout,