diff --git a/Web/Vue/CubeLib/README.md b/Web/Vue/CubeLib/README.md index 249df76..e77bd9f 100644 --- a/Web/Vue/CubeLib/README.md +++ b/Web/Vue/CubeLib/README.md @@ -22,15 +22,217 @@ yarn add joyd.web.vue.cubelib ## 使用 -```javascript -import { CubeButton } from 'joyd.web.vue.cubelib' +### 全局注册 -app.use(CubeButton) +```javascript +import { createApp } from 'vue' +import App from './App.vue' +import CubeLib from 'joyd.web.vue.cubelib' + +const app = createApp(App) +app.use(CubeLib) +app.mount('#app') ``` -## 文档 +### 按需导入 -查看 [在线文档](https://docs.joyd.com) 获取详细的使用说明和示例。 +```javascript +import { CubeButton, CubeSplitter } from 'joyd.web.vue.cubelib' + +// 在组件中使用 +export default { + components: { + CubeButton, + CubeSplitter + } +} +``` + +## 组件文档 + +### CubeButton + +按钮组件,提供基本的按钮样式和交互功能。 + +#### Props + +- `variant`: 按钮变体,可选值:`primary`, `secondary`, `outline`, `ghost` +- `size`: 按钮尺寸,可选值:`sm`, `md`, `lg` +- `disabled`: 是否禁用按钮 + +#### Events + +- `click`: 点击按钮时触发 + +### CubeSplitter + +可调整大小的分隔条组件,用于在布局中创建可调整大小的面板。 + +#### Props + +- `direction`: 分隔条方向,可选值:`vertical` (垂直), `horizontal` (水平) +- `position`: 分隔条位置,可选值:`left`, `right`, `top`, `bottom` +- `initialSize`: 初始尺寸 +- `minSize`: 最小尺寸 +- `maxSize`: 最大尺寸 + +#### Events + +- `resize`: 调整大小时触发 +- `resizeEnd`: 调整大小结束时触发 +- `collapse`: 折叠面板时触发 +- `expand`: 展开面板时触发 + +#### 使用示例 + +```vue + + + + + +``` + +#### CSS 变量 + +CubeSplitter 组件支持通过 CSS 变量进行定制: + +```css +:root { + --cube-splitter-color: #e0e0e0; + --cube-splitter-hover-color: #667eea; + --cube-splitter-active-color: #5568d3; + --cube-splitter-handle-color: #fff; + --cube-splitter-handle-shadow: 0 0 4px rgba(0, 0, 0, 0.2); + --cube-splitter-collapsing-color: #667eea; + --cube-splitter-collapsing-shadow: 0 0 10px rgba(102, 126, 234, 0.5); + --cube-splitter-transition-speed: 0.3s; +} +``` + +## 常见问题解答 + +### Q: 如何保存分隔条的位置? + +A: 可以使用 `@resize-end` 事件来保存最终的尺寸到 localStorage 或其他存储中,然后在组件挂载时从存储中加载。 + +### Q: 如何在最小尺寸和当前尺寸之间切换? + +A: 单击分隔条的句柄即可在最小尺寸和当前尺寸之间切换。 + +### Q: 为什么右侧分隔条的拖拽方向与左侧不同? + +A: CubeSplitter 组件统一了拖拽方向逻辑:向左/上拖动减小尺寸,向右/下拖动增大尺寸,无论分隔条位置是左还是右。 ## 贡献 diff --git a/Web/Vue/CubeLib/src/components/CubeSplitter.vue b/Web/Vue/CubeLib/src/components/CubeSplitter.vue new file mode 100644 index 0000000..5f3aa2a --- /dev/null +++ b/Web/Vue/CubeLib/src/components/CubeSplitter.vue @@ -0,0 +1,426 @@ + + + + + \ No newline at end of file diff --git a/Web/Vue/CubeLib/src/index.ts b/Web/Vue/CubeLib/src/index.ts index 9925f5d..7b9c635 100644 --- a/Web/Vue/CubeLib/src/index.ts +++ b/Web/Vue/CubeLib/src/index.ts @@ -1,8 +1,10 @@ import { App, defineComponent } from 'vue' import CubeButton from './components/CubeButton.vue' +import CubeSplitter from './components/CubeSplitter.vue' const components = { - CubeButton + CubeButton, + CubeSplitter } const install = (app: App) => { @@ -17,4 +19,4 @@ const CubeLib = { } export default CubeLib -export { CubeButton } \ No newline at end of file +export { CubeButton, CubeSplitter } \ No newline at end of file