fit2cloud-ui-plus 0.0.1-beta.2 → 0.0.1-beta.3
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/.editorconfig +14 -0
- package/BETA.MD +6 -0
- package/env.d.ts +13 -0
- package/examples/App.vue +65 -0
- package/examples/assets/github.png +0 -0
- package/examples/assets/hidden-code.png +0 -0
- package/examples/assets/iconfont/demo.css +539 -0
- package/examples/assets/iconfont/demo_index.html +257 -0
- package/examples/assets/iconfont/iconfont.css +27 -0
- package/examples/assets/iconfont/iconfont.js +1 -0
- package/examples/assets/iconfont/iconfont.json +30 -0
- package/examples/assets/iconfont/iconfont.ttf +0 -0
- package/examples/assets/iconfont/iconfont.woff +0 -0
- package/examples/assets/iconfont/iconfont.woff2 +0 -0
- package/examples/assets/logo.png +0 -0
- package/examples/components/CodeExample.vue +209 -0
- package/examples/components/DocumentTable.vue +98 -0
- package/examples/components/Markdown.vue +30 -0
- package/examples/layout/components/AppHeader.vue +35 -0
- package/examples/layout/components/Sidebar.vue +73 -0
- package/examples/layout/index.vue +55 -0
- package/examples/layout/layout.scss +75 -0
- package/examples/main.ts +25 -0
- package/examples/markdown/getting-started.md +38 -0
- package/examples/pages/filter-bar/demo/BaseFilterBar.vue +70 -0
- package/examples/pages/filter-bar/demo/SetConditionsDemo.vue +66 -0
- package/examples/pages/filter-bar/demo/SlotDemo.vue +77 -0
- package/examples/pages/filter-bar/index.vue +56 -0
- package/examples/pages/index.ts +11 -0
- package/examples/pages/read-write-switch/demo/BaseDemo.vue +30 -0
- package/examples/pages/read-write-switch/demo/CustomContentDemo.vue +28 -0
- package/examples/pages/read-write-switch/demo/InputRwSwitchDemo.vue +16 -0
- package/examples/pages/read-write-switch/demo/ReadSwitchDemo.vue +54 -0
- package/examples/pages/read-write-switch/demo/SelectRwSwitchDemo.vue +23 -0
- package/examples/pages/read-write-switch/demo/TableInnerEditDemo.vue +73 -0
- package/examples/pages/read-write-switch/demo/WriteSwitchDemo.vue +39 -0
- package/examples/pages/read-write-switch/index.vue +81 -0
- package/examples/pages/speed-dial/demo/BaseSpeedDial.vue +51 -0
- package/examples/pages/speed-dial/demo/SpeedDialCustom.vue +109 -0
- package/examples/pages/speed-dial/demo/SpeedDialPosition.vue +66 -0
- package/examples/pages/speed-dial/demo/SpeedDialTrigger.vue +64 -0
- package/examples/pages/speed-dial/index.vue +61 -0
- package/examples/pages/split-pane/demo/BaseSplit.vue +36 -0
- package/examples/pages/split-pane/demo/CustomResizer.vue +47 -0
- package/examples/pages/split-pane/demo/NestSplit.vue +34 -0
- package/examples/pages/split-pane/demo/ResizerType.vue +60 -0
- package/examples/pages/split-pane/index.vue +61 -0
- package/examples/pages/table/demo/BaseTable.vue +35 -0
- package/examples/pages/table/demo/DropdownColumn.vue +89 -0
- package/examples/pages/table/demo/DropdownColumnSlot.vue +92 -0
- package/examples/pages/table/demo/SaveSelectColumn.vue +41 -0
- package/examples/pages/table/demo/SelectColumn.vue +47 -0
- package/examples/pages/table/demo/TableOperations.vue +95 -0
- package/examples/pages/table/demo/TablePagination.vue +100 -0
- package/examples/pages/table/index.vue +89 -0
- package/examples/pages/tabs/demo/AddCloseTab.vue +73 -0
- package/examples/pages/tabs/index.vue +42 -0
- package/examples/router/doc-routes.ts +52 -0
- package/examples/router/index.ts +56 -0
- package/index.html +13 -0
- package/package.json +1 -5
- package/plugins/example-transform.ts +30 -0
- package/public/favicon.bmp +0 -0
- package/tsconfig.json +24 -0
- package/tsconfig.node.json +9 -0
- package/vite.config.ts +56 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<h3>
|
|
4
|
+
v-model + 事件 控制状态
|
|
5
|
+
</h3>
|
|
6
|
+
<div style="line-height: 40px;">
|
|
7
|
+
<fu-read-write-switch :data="input" v-model="write">
|
|
8
|
+
<el-input v-model="input" @blur="blur" @keydown.native="keydown"/>
|
|
9
|
+
</fu-read-write-switch>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<h3>
|
|
13
|
+
slot参数 + 事件 控制状态
|
|
14
|
+
</h3>
|
|
15
|
+
<div style="line-height: 40px;">
|
|
16
|
+
<fu-read-write-switch :data="input" v-slot:default="{read}">
|
|
17
|
+
<el-input v-model="input" @blur="read" @keydown.native="keydown2($event, read)"/>
|
|
18
|
+
</fu-read-write-switch>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script>
|
|
24
|
+
export default {
|
|
25
|
+
name: "ReadWriteSwitchDemo",
|
|
26
|
+
data() {
|
|
27
|
+
return {
|
|
28
|
+
write: false,
|
|
29
|
+
input: "单击填写"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
methods: {
|
|
33
|
+
change(obj) {
|
|
34
|
+
console.log(obj)
|
|
35
|
+
},
|
|
36
|
+
read() {
|
|
37
|
+
this.write = false
|
|
38
|
+
},
|
|
39
|
+
blur() {
|
|
40
|
+
this.read()
|
|
41
|
+
},
|
|
42
|
+
keydown(e) {
|
|
43
|
+
if (e.keyCode === 13) {
|
|
44
|
+
this.read()
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
keydown2(e, read) {
|
|
48
|
+
if (e.keyCode === 13) {
|
|
49
|
+
read()
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
</script>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<fu-select-rw-switch v-model="select">
|
|
4
|
+
<template #read>
|
|
5
|
+
<el-tag disable-transitions v-if="select === 'zh-CN'" type="danger">中文</el-tag>
|
|
6
|
+
<el-tag disable-transitions v-else>English</el-tag>
|
|
7
|
+
</template>
|
|
8
|
+
<el-option key="zh-CN" label="中文" value="zh-CN"/>
|
|
9
|
+
<el-option key="en-US" label="English" value="en-US"/>
|
|
10
|
+
</fu-select-rw-switch>
|
|
11
|
+
</div>
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
export default {
|
|
16
|
+
name: "SelectRwSwitchDemo",
|
|
17
|
+
data() {
|
|
18
|
+
return {
|
|
19
|
+
select: "zh-CN"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
</script>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<fu-table :data="tableData">
|
|
4
|
+
<el-table-column type="selection"></el-table-column>
|
|
5
|
+
<el-table-column prop="name" label="姓名" min-width="180" fix></el-table-column>
|
|
6
|
+
|
|
7
|
+
<el-table-column prop="enable" label="语言(可行内编辑)">
|
|
8
|
+
<template #default="{row}">
|
|
9
|
+
<fu-select-rw-switch v-model="row.language">
|
|
10
|
+
<template #read>
|
|
11
|
+
<el-tag disable-transitions v-if="row.language === 'zh-CN'" type="danger">中文</el-tag>
|
|
12
|
+
<el-tag disable-transitions v-else>English</el-tag>
|
|
13
|
+
</template>
|
|
14
|
+
<el-option key="zh-CN" label="中文" value="zh-CN"/>
|
|
15
|
+
<el-option key="en-US" label="English" value="en-US"/>
|
|
16
|
+
</fu-select-rw-switch>
|
|
17
|
+
</template>
|
|
18
|
+
</el-table-column>
|
|
19
|
+
|
|
20
|
+
<el-table-column prop="address" label="地址(可行内编辑)">
|
|
21
|
+
<template #default="{row}">
|
|
22
|
+
<fu-input-rw-switch v-model="row.address"></fu-input-rw-switch>
|
|
23
|
+
</template>
|
|
24
|
+
</el-table-column>
|
|
25
|
+
<el-table-column prop="date" label="日期" min-width="180"></el-table-column>
|
|
26
|
+
</fu-table>
|
|
27
|
+
</div>
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<script>
|
|
31
|
+
export default {
|
|
32
|
+
name: "TableInnerEditDemo",
|
|
33
|
+
data() {
|
|
34
|
+
return {
|
|
35
|
+
tableData: [
|
|
36
|
+
{
|
|
37
|
+
date: '2016-05-01',
|
|
38
|
+
name: '张三',
|
|
39
|
+
language: "zh-CN",
|
|
40
|
+
address: '北京朝阳区财富中心 1室'
|
|
41
|
+
}, {
|
|
42
|
+
date: '2016-05-02',
|
|
43
|
+
name: '张三',
|
|
44
|
+
language: "en-US",
|
|
45
|
+
address: '北京朝阳区财富中心 2室'
|
|
46
|
+
}, {
|
|
47
|
+
date: '2016-05-03',
|
|
48
|
+
name: '张三',
|
|
49
|
+
language: "zh-CN",
|
|
50
|
+
address: '北京朝阳区财富中心 3室'
|
|
51
|
+
}, {
|
|
52
|
+
date: '2016-05-04',
|
|
53
|
+
name: '张三',
|
|
54
|
+
language: "en-US",
|
|
55
|
+
address: '北京朝阳区财富中心 4室'
|
|
56
|
+
}, {
|
|
57
|
+
date: '2016-05-05',
|
|
58
|
+
name: '张三',
|
|
59
|
+
language: "zh-CN",
|
|
60
|
+
address: '北京朝阳区财富中心 5室'
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
methods: {
|
|
66
|
+
blur(read) {
|
|
67
|
+
setTimeout(() => {
|
|
68
|
+
read()
|
|
69
|
+
}, 100)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
</script>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div style="line-height: 40px;">
|
|
4
|
+
<fu-read-write-switch :data="click" v-model="write">
|
|
5
|
+
<el-input v-model="click" @blur="write = false"/>
|
|
6
|
+
</fu-read-write-switch>
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<div style="line-height: 40px;">
|
|
10
|
+
<fu-read-write-switch :data="dblclick" v-model="write2" write-trigger="dblclick">
|
|
11
|
+
<el-input v-model="dblclick" @blur="write2 = false"/>
|
|
12
|
+
</fu-read-write-switch>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div style="line-height: 40px;">
|
|
16
|
+
<fu-read-write-switch :data="manual" v-model="write3" write-trigger="manual">
|
|
17
|
+
<el-input v-model="manual" @blur="write3 = false"/>
|
|
18
|
+
</fu-read-write-switch>
|
|
19
|
+
<el-button @click="write3 = true">点击按钮填写</el-button>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
</template>
|
|
24
|
+
|
|
25
|
+
<script>
|
|
26
|
+
export default {
|
|
27
|
+
name: "WriteSwitchDemo",
|
|
28
|
+
data() {
|
|
29
|
+
return {
|
|
30
|
+
write: false,
|
|
31
|
+
write2: false,
|
|
32
|
+
write3: false,
|
|
33
|
+
click: "单击填写",
|
|
34
|
+
dblclick: "双击填写",
|
|
35
|
+
manual: "点击无法填写",
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<!-- 一级标题 -->
|
|
4
|
+
<h1 class="component-h1">ReadWriteSwitch 读写切换</h1>
|
|
5
|
+
<!-- 一级描述 -->
|
|
6
|
+
<p>读状态与写状态切换,读状态默认显示只读文本,可以自定义读/写状态的内容</p>
|
|
7
|
+
<!--内容 -->
|
|
8
|
+
<div class="component-block" v-for="(item, index) in comList" :key="index">
|
|
9
|
+
<h2>{{ item.title }}</h2>
|
|
10
|
+
<p>{{ item.titleDesc }}</p>
|
|
11
|
+
<code-example :component="item.component" />
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<script setup lang="ts">
|
|
17
|
+
import BaseDemo from "./demo/BaseDemo.vue";
|
|
18
|
+
import CustomContentDemo from "./demo/CustomContentDemo.vue";
|
|
19
|
+
import InputRwSwitchDemo from "./demo/InputRwSwitchDemo.vue";
|
|
20
|
+
import ReadSwitchDemo from "./demo/ReadSwitchDemo.vue";
|
|
21
|
+
import SelectRwSwitchDemo from "./demo/SelectRwSwitchDemo.vue";
|
|
22
|
+
import TableInnerEditDemo from "./demo/TableInnerEditDemo.vue";
|
|
23
|
+
import WriteSwitchDemo from "./demo/WriteSwitchDemo.vue";
|
|
24
|
+
const comList = [
|
|
25
|
+
{
|
|
26
|
+
title: "基本用法",
|
|
27
|
+
titleDesc: "读写状态切换,允许自定义读写内容、自定义读写状态控制,可用于Table 表内编辑等",
|
|
28
|
+
component: BaseDemo,
|
|
29
|
+
},
|
|
30
|
+
// {
|
|
31
|
+
// title: "写状态控制",
|
|
32
|
+
// titleDesc: "单击,双击,手动触发",
|
|
33
|
+
// component: WriteSwitchDemo,
|
|
34
|
+
// },
|
|
35
|
+
// {
|
|
36
|
+
// title: "读状态控制",
|
|
37
|
+
// titleDesc: "使用v-model或者使用slot的参数切换读状态",
|
|
38
|
+
// component: ReadSwitchDemo,
|
|
39
|
+
// },
|
|
40
|
+
// {
|
|
41
|
+
// title: "自定义读写内容",
|
|
42
|
+
// titleDesc: "v-slot:read 和 v-slot:default 分别为读内容和写内容",
|
|
43
|
+
// component: CustomContentDemo,
|
|
44
|
+
// },
|
|
45
|
+
// {
|
|
46
|
+
// title: "InputRwSwitch",
|
|
47
|
+
// titleDesc: "Input状态切换组件",
|
|
48
|
+
// component: InputRwSwitchDemo,
|
|
49
|
+
// description: `继承el-input的功能`
|
|
50
|
+
// },
|
|
51
|
+
// {
|
|
52
|
+
// title: "SelectRwSwitch",
|
|
53
|
+
// titleDesc: "Select状态切换组件",
|
|
54
|
+
// component: SelectRwSwitchDemo,
|
|
55
|
+
// description: `继承el-select的功能`
|
|
56
|
+
// },
|
|
57
|
+
// {
|
|
58
|
+
// title: "表格行内编辑",
|
|
59
|
+
// titleDesc: "使用 InputRwSwitch 和 SelectRwSwitch 实现行内编辑功能",
|
|
60
|
+
// component: TableInnerEditDemo,
|
|
61
|
+
// }
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
</script>
|
|
65
|
+
|
|
66
|
+
<style lang="scss" scoped>
|
|
67
|
+
.component-block {
|
|
68
|
+
margin-top: 40px;
|
|
69
|
+
|
|
70
|
+
p {
|
|
71
|
+
font-size: 14px;
|
|
72
|
+
color: #5e6d82;
|
|
73
|
+
line-height: 1.5em;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
h2 {
|
|
77
|
+
font-weight: 400;
|
|
78
|
+
color: #1f2f3d;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
</style>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<demo>基本用法</demo>
|
|
2
|
+
<template>
|
|
3
|
+
<div class="speed-dial-demo">
|
|
4
|
+
<div>
|
|
5
|
+
<fu-speed-dial id="left" size="big" direction="left" :items="items" @click="click" />
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<div>
|
|
9
|
+
<fu-speed-dial id="top" :items="items" @click="click" type="success" icon="el-icon-video-play"
|
|
10
|
+
active-icon="el-icon-video-pause" />
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<div>
|
|
14
|
+
<fu-speed-dial icon="iconfont icon-money" id="right" size="medium" direction="right" type="warning" :items="items"
|
|
15
|
+
@click="click" />
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div>
|
|
19
|
+
<fu-speed-dial id="bottom" size="small" direction="bottom" type="danger" :items="items" @click="click" />
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</template>
|
|
23
|
+
|
|
24
|
+
<script setup lang="ts">
|
|
25
|
+
const items = [
|
|
26
|
+
{ title: "Item 1", click: clickItem },
|
|
27
|
+
{ title: "Item 2", click: clickItem },
|
|
28
|
+
{ title: "Item 3", click: clickItem, icon: "iconfont icon-huiyuan" },
|
|
29
|
+
{ title: "Item 4", click: clickItem },
|
|
30
|
+
{ title: "Item 5", click: clickItem },
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
function click(obj, e) {
|
|
34
|
+
console.log(obj, e)
|
|
35
|
+
}
|
|
36
|
+
function clickItem(item, e) {
|
|
37
|
+
console.log(item, e)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<style lang="scss" scoped>
|
|
43
|
+
.speed-dial-demo {
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
|
|
47
|
+
>div {
|
|
48
|
+
width: 25%;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
</style>
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="speed-dial-demo">
|
|
3
|
+
<div>
|
|
4
|
+
<h4>
|
|
5
|
+
默认
|
|
6
|
+
</h4>
|
|
7
|
+
<fu-speed-dial>
|
|
8
|
+
<fu-speed-dial-item :index="0" title="No.0" @click="clickItem"/>
|
|
9
|
+
<fu-speed-dial-item :index="1" title="No.1" @click="clickItem"/>
|
|
10
|
+
</fu-speed-dial>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<div>
|
|
14
|
+
<h4>
|
|
15
|
+
Items数组
|
|
16
|
+
</h4>
|
|
17
|
+
<fu-speed-dial :items="items"/>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div>
|
|
21
|
+
<h4>
|
|
22
|
+
Slot
|
|
23
|
+
</h4>
|
|
24
|
+
<fu-speed-dial>
|
|
25
|
+
<fu-speed-dial-item :index="0" title="No.0" @click="clickItem" color="#222" bg-color="#DDD"
|
|
26
|
+
title-bg-color="#F1F1F1" title-color="#555"/>
|
|
27
|
+
<fu-speed-dial-item :index="1" title="No.1" @click="clickItem" button-class="custom-button"
|
|
28
|
+
title-class="custom-title"/>
|
|
29
|
+
</fu-speed-dial>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div>
|
|
33
|
+
<h4>
|
|
34
|
+
Item Slot
|
|
35
|
+
</h4>
|
|
36
|
+
<fu-speed-dial ref="speed-dial">
|
|
37
|
+
<fu-speed-dial-item :index="0">
|
|
38
|
+
<el-button @click="clickItem({title: 'Item 1',index: 0, custom:true},$event)">Item 1</el-button>
|
|
39
|
+
</fu-speed-dial-item>
|
|
40
|
+
|
|
41
|
+
<fu-speed-dial-item :index="1">
|
|
42
|
+
<el-button @click="clickItem({title: 'Item 2',index: 1, custom:true})">Item 2</el-button>
|
|
43
|
+
</fu-speed-dial-item>
|
|
44
|
+
</fu-speed-dial>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</template>
|
|
48
|
+
|
|
49
|
+
<script>
|
|
50
|
+
const itemStyle = {
|
|
51
|
+
bgColor: "#DDD",
|
|
52
|
+
color: "#222",
|
|
53
|
+
titleBgColor: "#F1F1F1",
|
|
54
|
+
titleColor: "#555",
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export default {
|
|
58
|
+
name: "BaseSpeedDial",
|
|
59
|
+
data() {
|
|
60
|
+
return {
|
|
61
|
+
items: [
|
|
62
|
+
{
|
|
63
|
+
title: "Item 1",
|
|
64
|
+
icon: "el-icon-edit",
|
|
65
|
+
click: this.clickItem,
|
|
66
|
+
...itemStyle
|
|
67
|
+
},
|
|
68
|
+
{title: "Item 2", click: this.clickItem, ...itemStyle},
|
|
69
|
+
{title: "Item 3", click: this.clickItem, ...itemStyle},
|
|
70
|
+
{title: "Item 4", click: this.clickItem, ...itemStyle},
|
|
71
|
+
{title: "Item 5", click: this.clickItem, ...itemStyle},
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
methods: {
|
|
76
|
+
click(obj, e) {
|
|
77
|
+
console.log(obj, e)
|
|
78
|
+
},
|
|
79
|
+
clickItem(item, e) {
|
|
80
|
+
if (item.custom) {
|
|
81
|
+
this.$refs["speed-dial"].close()
|
|
82
|
+
}
|
|
83
|
+
console.log(item, e)
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
</script>
|
|
88
|
+
|
|
89
|
+
<style lang="scss" scoped>
|
|
90
|
+
.speed-dial-demo {
|
|
91
|
+
display: flex;
|
|
92
|
+
align-items: center;
|
|
93
|
+
|
|
94
|
+
> div {
|
|
95
|
+
width: 25%;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
::v-deep(.custom-button) {
|
|
100
|
+
color: #222;
|
|
101
|
+
background-color: #DDD;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
::v-deep(.custom-title) {
|
|
105
|
+
color: #555;
|
|
106
|
+
background-color: #F1F1F1;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
</style>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="speed-dial-demo">
|
|
3
|
+
<div>
|
|
4
|
+
拖拽:
|
|
5
|
+
<el-radio-group v-model="movable">
|
|
6
|
+
<el-radio :label="true">允许</el-radio>
|
|
7
|
+
<el-radio :label="false">禁止</el-radio>
|
|
8
|
+
</el-radio-group>
|
|
9
|
+
</div>
|
|
10
|
+
<div>
|
|
11
|
+
position:
|
|
12
|
+
<el-radio-group v-model="position">
|
|
13
|
+
<el-radio label="absolute">absolute</el-radio>
|
|
14
|
+
<el-radio label="fixed">fixed</el-radio>
|
|
15
|
+
</el-radio-group>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="speed-dial-move">
|
|
19
|
+
<fu-speed-dial :position="position" bottom="calc(50% - 20px)" right="calc(50% - 20px)"
|
|
20
|
+
:movable="movable" :items="items" @click="click"/>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</template>
|
|
24
|
+
|
|
25
|
+
<script>
|
|
26
|
+
export default {
|
|
27
|
+
name: "SpeedDialPosition",
|
|
28
|
+
data() {
|
|
29
|
+
return {
|
|
30
|
+
position: "absolute",
|
|
31
|
+
movable: false,
|
|
32
|
+
items: [
|
|
33
|
+
{title: "Item 1", click: this.clickItem},
|
|
34
|
+
{title: "Item 2", click: this.clickItem},
|
|
35
|
+
{title: "Item 3", click: this.clickItem},
|
|
36
|
+
{title: "Item 4", click: this.clickItem},
|
|
37
|
+
{title: "Item 5", click: this.clickItem},
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
methods: {
|
|
42
|
+
click(obj, e) {
|
|
43
|
+
console.log(obj, e)
|
|
44
|
+
},
|
|
45
|
+
clickItem(item, e) {
|
|
46
|
+
console.log(item, e)
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
}
|
|
50
|
+
</script>
|
|
51
|
+
|
|
52
|
+
<style lang="scss" scoped>
|
|
53
|
+
.speed-dial-demo {
|
|
54
|
+
width: 100%;
|
|
55
|
+
|
|
56
|
+
.speed-dial-move {
|
|
57
|
+
margin-top: 10px;
|
|
58
|
+
border: 1px #7c7c7c dashed;
|
|
59
|
+
position: relative;
|
|
60
|
+
width: 100%;
|
|
61
|
+
height: 100px;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
</style>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="speed-dial-demo">
|
|
3
|
+
<div>
|
|
4
|
+
<h4>默认设置</h4>
|
|
5
|
+
<fu-speed-dial :items="items"/>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<div>
|
|
9
|
+
<h4>item点击后不关闭</h4>
|
|
10
|
+
<fu-speed-dial direction="left" :items="items" :item-click-close="false"/>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<div>
|
|
14
|
+
<h4>点击空白处不关闭</h4>
|
|
15
|
+
<fu-speed-dial :items="items" :outside-close="false"/>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div>
|
|
19
|
+
<h4>
|
|
20
|
+
手动开关
|
|
21
|
+
<el-button size="small" class="fab-demo-manual" @click="toggle">
|
|
22
|
+
<span v-if="active">关闭</span>
|
|
23
|
+
<span v-else>打开</span>
|
|
24
|
+
</el-button>
|
|
25
|
+
</h4>
|
|
26
|
+
|
|
27
|
+
<fu-speed-dial :items="items" :manual="true" v-model="active"/>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</template>
|
|
31
|
+
|
|
32
|
+
<script>
|
|
33
|
+
export default {
|
|
34
|
+
name: "SpeedDialTrigger",
|
|
35
|
+
data() {
|
|
36
|
+
return {
|
|
37
|
+
active: false,
|
|
38
|
+
items: [
|
|
39
|
+
{title: "Item 1"},
|
|
40
|
+
{title: "Item 2"},
|
|
41
|
+
{title: "Item 3"},
|
|
42
|
+
{title: "Item 4"},
|
|
43
|
+
{title: "Item 5"},
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
methods: {
|
|
48
|
+
toggle() {
|
|
49
|
+
this.active = !this.active;
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
</script>
|
|
54
|
+
|
|
55
|
+
<style lang="scss" scoped>
|
|
56
|
+
.speed-dial-demo {
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
|
|
60
|
+
> div {
|
|
61
|
+
width: 25%;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
</style>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<!-- 一级标题 -->
|
|
4
|
+
<h1 class="component-h1">SpeedDial 快速拨号</h1>
|
|
5
|
+
<!-- 一级描述 -->
|
|
6
|
+
<p>快速拨号,支持4个方向,支持固定位置,支持移动位置;图标支持iconfont;</p>
|
|
7
|
+
<!-- BaseTable内容 -->
|
|
8
|
+
<div class="component-block" v-for="(item, index) in comList" :key="index">
|
|
9
|
+
<h2>{{ item.title }}</h2>
|
|
10
|
+
<p>{{ item.titleDesc }}</p>
|
|
11
|
+
<code-example :description="item.description" :component="item.component" />
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<script setup lang="ts">
|
|
17
|
+
import BaseSpeedDial from "./demo/BaseSpeedDial.vue";
|
|
18
|
+
import SpeedDialPosition from "./demo/SpeedDialPosition.vue";
|
|
19
|
+
import SpeedDialTrigger from "./demo/SpeedDialTrigger.vue";
|
|
20
|
+
import SpeedDialCustom from "./demo/SpeedDialCustom.vue";
|
|
21
|
+
|
|
22
|
+
const comList = [
|
|
23
|
+
{
|
|
24
|
+
title: "基本用法",
|
|
25
|
+
titleDesc: "可以设置方向,大小,主题,图标",
|
|
26
|
+
component: BaseSpeedDial,
|
|
27
|
+
description: `控制台查看click事件`
|
|
28
|
+
}, {
|
|
29
|
+
title: "定位方式",
|
|
30
|
+
titleDesc: "position 设置 absolute / fixed 可以固定位置,并且可以移动位置",
|
|
31
|
+
component: SpeedDialPosition,
|
|
32
|
+
description: `设置localKey,可以保存移动位置到localStorage`
|
|
33
|
+
}, {
|
|
34
|
+
title: "开关方式",
|
|
35
|
+
titleDesc: "",
|
|
36
|
+
component: SpeedDialTrigger,
|
|
37
|
+
description: `设置localKey,可以保存移动位置到localStorage`
|
|
38
|
+
}, {
|
|
39
|
+
title: "自定义内容",
|
|
40
|
+
titleDesc: "",
|
|
41
|
+
component: SpeedDialCustom,
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<style lang="scss" scoped>
|
|
47
|
+
.component-block {
|
|
48
|
+
margin-top: 40px;
|
|
49
|
+
|
|
50
|
+
p {
|
|
51
|
+
font-size: 14px;
|
|
52
|
+
color: #5e6d82;
|
|
53
|
+
line-height: 1.5em;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
h2 {
|
|
57
|
+
font-weight: 400;
|
|
58
|
+
color: #1f2f3d;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
</style>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<demo>基本用法</demo>
|
|
2
|
+
<template>
|
|
3
|
+
<div>
|
|
4
|
+
<el-divider content-position="left">水平分割</el-divider>
|
|
5
|
+
<div class="demo-split">
|
|
6
|
+
<fu-split-pane left="200px">
|
|
7
|
+
<template v-slot:left>
|
|
8
|
+
Left
|
|
9
|
+
</template>
|
|
10
|
+
<template v-slot:right>
|
|
11
|
+
Right
|
|
12
|
+
</template>
|
|
13
|
+
</fu-split-pane>
|
|
14
|
+
</div>
|
|
15
|
+
<el-divider content-position="left">垂直分割</el-divider>
|
|
16
|
+
<div class="demo-split">
|
|
17
|
+
<fu-split-pane top="40%" direction="vertical">
|
|
18
|
+
<template v-slot:top>
|
|
19
|
+
Top
|
|
20
|
+
</template>
|
|
21
|
+
<template v-slot:bottom>
|
|
22
|
+
Bottom
|
|
23
|
+
</template>
|
|
24
|
+
</fu-split-pane>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script setup lang="ts">
|
|
30
|
+
</script>
|
|
31
|
+
<style lang="scss" scoped>
|
|
32
|
+
.demo-split {
|
|
33
|
+
height: 200px;
|
|
34
|
+
border: 1px solid #dcdee2;
|
|
35
|
+
}
|
|
36
|
+
</style>
|