diff --git a/packages/@core/base/icons/src/lucide.ts b/packages/@core/base/icons/src/lucide.ts index 97603eb5..21a1beff 100644 --- a/packages/@core/base/icons/src/lucide.ts +++ b/packages/@core/base/icons/src/lucide.ts @@ -28,6 +28,7 @@ export { Fullscreen, Github, Grip, + GripVertical, Info, InspectionPanel, Languages, diff --git a/packages/@core/ui-kit/shadcn-ui/src/ui/index.ts b/packages/@core/ui-kit/shadcn-ui/src/ui/index.ts index 2711f942..02e76145 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/ui/index.ts +++ b/packages/@core/ui-kit/shadcn-ui/src/ui/index.ts @@ -16,6 +16,7 @@ export * from './pagination'; export * from './pin-input'; export * from './popover'; export * from './radio-group'; +export * from './resizable'; export * from './scroll-area'; export * from './select'; export * from './separator'; diff --git a/packages/@core/ui-kit/shadcn-ui/src/ui/resizable/ResizableHandle.vue b/packages/@core/ui-kit/shadcn-ui/src/ui/resizable/ResizableHandle.vue new file mode 100644 index 00000000..81dc3fb4 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/ui/resizable/ResizableHandle.vue @@ -0,0 +1,48 @@ + + + + + + + + + + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/ui/resizable/ResizablePanelGroup.vue b/packages/@core/ui-kit/shadcn-ui/src/ui/resizable/ResizablePanelGroup.vue new file mode 100644 index 00000000..8ea15f99 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/ui/resizable/ResizablePanelGroup.vue @@ -0,0 +1,38 @@ + + + + + + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/ui/resizable/index.ts b/packages/@core/ui-kit/shadcn-ui/src/ui/resizable/index.ts new file mode 100644 index 00000000..75c05d58 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/ui/resizable/index.ts @@ -0,0 +1,3 @@ +export { default as ResizableHandle } from './ResizableHandle.vue'; +export { default as ResizablePanelGroup } from './ResizablePanelGroup.vue'; +export { SplitterPanel as ResizablePanel } from 'radix-vue'; diff --git a/packages/effects/common-ui/src/components/col-page/col-page.vue b/packages/effects/common-ui/src/components/col-page/col-page.vue new file mode 100644 index 00000000..c3f9d686 --- /dev/null +++ b/packages/effects/common-ui/src/components/col-page/col-page.vue @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/effects/common-ui/src/components/col-page/index.ts b/packages/effects/common-ui/src/components/col-page/index.ts new file mode 100644 index 00000000..11b33058 --- /dev/null +++ b/packages/effects/common-ui/src/components/col-page/index.ts @@ -0,0 +1,2 @@ +export { default as ColPage } from './col-page.vue'; +export * from './types'; diff --git a/packages/effects/common-ui/src/components/col-page/types.ts b/packages/effects/common-ui/src/components/col-page/types.ts new file mode 100644 index 00000000..491d1e6d --- /dev/null +++ b/packages/effects/common-ui/src/components/col-page/types.ts @@ -0,0 +1,26 @@ +import type { PageProps } from '../page/types'; + +export interface ColPageProps extends PageProps { + /** + * 左侧宽度 + * @default 30 + */ + leftWidth?: number; + leftMinWidth?: number; + leftMaxWidth?: number; + leftCollapsedWidth?: number; + leftCollapsible?: boolean; + /** + * 右侧宽度 + * @default 70 + */ + rightWidth?: number; + rightMinWidth?: number; + rightCollapsedWidth?: number; + rightMaxWidth?: number; + rightCollapsible?: boolean; + + resizable?: boolean; + splitLine?: boolean; + splitHandle?: boolean; +} diff --git a/packages/effects/common-ui/src/components/index.ts b/packages/effects/common-ui/src/components/index.ts index cd93b506..6bba5526 100644 --- a/packages/effects/common-ui/src/components/index.ts +++ b/packages/effects/common-ui/src/components/index.ts @@ -1,5 +1,6 @@ export * from './api-component'; export * from './captcha'; +export * from './col-page'; export * from './ellipsis-text'; export * from './icon-picker'; export * from './page'; diff --git a/packages/effects/common-ui/src/components/page/index.ts b/packages/effects/common-ui/src/components/page/index.ts index 65bf3c69..fd9e02f2 100644 --- a/packages/effects/common-ui/src/components/page/index.ts +++ b/packages/effects/common-ui/src/components/page/index.ts @@ -1 +1,2 @@ export { default as Page } from './page.vue'; +export * from './types'; diff --git a/packages/effects/common-ui/src/components/page/page.vue b/packages/effects/common-ui/src/components/page/page.vue index 78f0ed4c..3a2ca8ac 100644 --- a/packages/effects/common-ui/src/components/page/page.vue +++ b/packages/effects/common-ui/src/components/page/page.vue @@ -1,4 +1,6 @@ + + + + ColPage 双列布局组件 + Alpha + + + + + + + + + + + + + 这里是左侧内容 + 这里是左侧内容 + 这里是左侧内容 + 这里是左侧内容 + 这里是左侧内容 + + + + + + 可拖动调整宽度 + 显示拖动分隔线 + 显示拖动手柄 + + 左侧可折叠 + + + + 左侧最小宽度百分比: + (props.leftMinWidth = value as number)" + /> + 左侧最大宽度百分比: + (props.leftMaxWidth = value as number)" + /> + + + + + 双列布局组件是一个在Page组件上扩展的相对基础的布局组件,支持左侧折叠(当拖拽导致左侧宽度比最小宽度还要小时,还可以进入折叠状态)、拖拽调整宽度等功能。 + + 以上宽度设置的数值是百分比,最小值为1,最大值为100。 + + 这是一个实验性的组件,用法可能会发生变动,也可能最终不会被采用。在其用法正式出现在文档中之前,不建议在生产环境中使用。 + + + + + + +
这里是左侧内容
+ 双列布局组件是一个在Page组件上扩展的相对基础的布局组件,支持左侧折叠(当拖拽导致左侧宽度比最小宽度还要小时,还可以进入折叠状态)、拖拽调整宽度等功能。 +
以上宽度设置的数值是百分比,最小值为1,最大值为100。
+ 这是一个实验性的组件,用法可能会发生变动,也可能最终不会被采用。在其用法正式出现在文档中之前,不建议在生产环境中使用。 +