From acd87b22508270209d481f335418e8e93e97e7b6 Mon Sep 17 00:00:00 2001 From: Netfan Date: Thu, 19 Dec 2024 20:37:42 +0800 Subject: [PATCH] feat: add `resizable` and `ColPage` component (#5188) * feat: add component resizable * feat: component `ColPage` with demo --- packages/@core/base/icons/src/lucide.ts | 1 + .../@core/ui-kit/shadcn-ui/src/ui/index.ts | 1 + .../src/ui/resizable/ResizableHandle.vue | 48 ++++++++ .../src/ui/resizable/ResizablePanelGroup.vue | 38 +++++++ .../shadcn-ui/src/ui/resizable/index.ts | 3 + .../src/components/col-page/col-page.vue | 107 ++++++++++++++++++ .../src/components/col-page/index.ts | 2 + .../src/components/col-page/types.ts | 26 +++++ .../effects/common-ui/src/components/index.ts | 1 + .../common-ui/src/components/page/index.ts | 1 + .../common-ui/src/components/page/page.vue | 16 +-- .../common-ui/src/components/page/types.ts | 11 ++ .../src/locales/langs/en-US/examples.json | 6 + .../src/locales/langs/zh-CN/examples.json | 3 + .../src/router/routes/modules/examples.ts | 11 ++ .../src/views/examples/layout/col-page.vue | 106 +++++++++++++++++ 16 files changed, 368 insertions(+), 13 deletions(-) create mode 100644 packages/@core/ui-kit/shadcn-ui/src/ui/resizable/ResizableHandle.vue create mode 100644 packages/@core/ui-kit/shadcn-ui/src/ui/resizable/ResizablePanelGroup.vue create mode 100644 packages/@core/ui-kit/shadcn-ui/src/ui/resizable/index.ts create mode 100644 packages/effects/common-ui/src/components/col-page/col-page.vue create mode 100644 packages/effects/common-ui/src/components/col-page/index.ts create mode 100644 packages/effects/common-ui/src/components/col-page/types.ts create mode 100644 packages/effects/common-ui/src/components/page/types.ts create mode 100644 playground/src/views/examples/layout/col-page.vue 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 @@ +