@templmf/temp-solf-lmf 0.0.27 → 0.0.29
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/package.json +1 -1
- package/skills/code-reviewer/SKILL.md +482 -0
- package/skills/daily-qa-skill/SKILL.md +147 -0
- package/skills/daily-qa-skill/references/tools.md +130 -0
- package/skills/element-plus-vue3/LICENSE.txt +202 -0
- package/skills/element-plus-vue3/SKILL.md +218 -0
- package/skills/element-plus-vue3/api/component-api.md +94 -0
- package/skills/element-plus-vue3/api/global-config.md +89 -0
- package/skills/element-plus-vue3/api/props-and-events.md +101 -0
- package/skills/element-plus-vue3/examples/components/button.md +99 -0
- package/skills/element-plus-vue3/examples/components/date-picker.md +115 -0
- package/skills/element-plus-vue3/examples/components/dialog.md +106 -0
- package/skills/element-plus-vue3/examples/components/form.md +127 -0
- package/skills/element-plus-vue3/examples/components/input.md +123 -0
- package/skills/element-plus-vue3/examples/components/message.md +93 -0
- package/skills/element-plus-vue3/examples/components/overview.md +59 -0
- package/skills/element-plus-vue3/examples/components/select.md +133 -0
- package/skills/element-plus-vue3/examples/components/table.md +166 -0
- package/skills/element-plus-vue3/examples/guide/design.md +68 -0
- package/skills/element-plus-vue3/examples/guide/global-config.md +95 -0
- package/skills/element-plus-vue3/examples/guide/i18n.md +95 -0
- package/skills/element-plus-vue3/examples/guide/installation.md +110 -0
- package/skills/element-plus-vue3/examples/guide/quick-start.md +103 -0
- package/skills/element-plus-vue3/examples/guide/theme.md +78 -0
- package/skills/element-plus-vue3/templates/component-usage.md +92 -0
- package/skills/element-plus-vue3/templates/installation.md +82 -0
- package/skills/element-plus-vue3/templates/project-setup.md +83 -0
- package/test.md +7 -5
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Input Component
|
|
2
|
+
|
|
3
|
+
**官方文档**: https://element-plus.org/en-US/component/input.html
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Instructions
|
|
7
|
+
|
|
8
|
+
This example demonstrates the Input component in Element Plus.
|
|
9
|
+
|
|
10
|
+
### Key Concepts
|
|
11
|
+
|
|
12
|
+
- Input types
|
|
13
|
+
- Input sizes
|
|
14
|
+
- Input states
|
|
15
|
+
- Input events
|
|
16
|
+
- Input validation
|
|
17
|
+
|
|
18
|
+
### Example: Basic Input
|
|
19
|
+
|
|
20
|
+
```vue
|
|
21
|
+
<template>
|
|
22
|
+
<el-input v-model="input" placeholder="Please input" />
|
|
23
|
+
</template>
|
|
24
|
+
|
|
25
|
+
<script setup>
|
|
26
|
+
import { ref } from 'vue'
|
|
27
|
+
const input = ref('')
|
|
28
|
+
</script>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Example: Input Types
|
|
32
|
+
|
|
33
|
+
```vue
|
|
34
|
+
<template>
|
|
35
|
+
<el-input v-model="text" type="text" />
|
|
36
|
+
<el-input v-model="password" type="password" show-password />
|
|
37
|
+
<el-input v-model="textarea" type="textarea" :rows="4" />
|
|
38
|
+
</template>
|
|
39
|
+
|
|
40
|
+
<script setup>
|
|
41
|
+
import { ref } from 'vue'
|
|
42
|
+
const text = ref('')
|
|
43
|
+
const password = ref('')
|
|
44
|
+
const textarea = ref('')
|
|
45
|
+
</script>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Example: Input Sizes
|
|
49
|
+
|
|
50
|
+
```vue
|
|
51
|
+
<template>
|
|
52
|
+
<el-input v-model="input1" size="large" />
|
|
53
|
+
<el-input v-model="input2" size="default" />
|
|
54
|
+
<el-input v-model="input3" size="small" />
|
|
55
|
+
</template>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Example: Input States
|
|
59
|
+
|
|
60
|
+
```vue
|
|
61
|
+
<template>
|
|
62
|
+
<el-input v-model="input" disabled />
|
|
63
|
+
<el-input v-model="input" readonly />
|
|
64
|
+
<el-input v-model="input" clearable />
|
|
65
|
+
</template>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Example: Input with Prefix/Suffix
|
|
69
|
+
|
|
70
|
+
```vue
|
|
71
|
+
<template>
|
|
72
|
+
<el-input v-model="input1">
|
|
73
|
+
<template #prefix>
|
|
74
|
+
<el-icon><Search /></el-icon>
|
|
75
|
+
</template>
|
|
76
|
+
</el-input>
|
|
77
|
+
<el-input v-model="input2">
|
|
78
|
+
<template #suffix>
|
|
79
|
+
<el-icon><Calendar /></el-icon>
|
|
80
|
+
</template>
|
|
81
|
+
</el-input>
|
|
82
|
+
</template>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Example: Input Events
|
|
86
|
+
|
|
87
|
+
```vue
|
|
88
|
+
<template>
|
|
89
|
+
<el-input
|
|
90
|
+
v-model="input"
|
|
91
|
+
@input="handleInput"
|
|
92
|
+
@change="handleChange"
|
|
93
|
+
@focus="handleFocus"
|
|
94
|
+
@blur="handleBlur"
|
|
95
|
+
/>
|
|
96
|
+
</template>
|
|
97
|
+
|
|
98
|
+
<script setup>
|
|
99
|
+
import { ref } from 'vue'
|
|
100
|
+
const input = ref('')
|
|
101
|
+
|
|
102
|
+
const handleInput = (value) => {
|
|
103
|
+
console.log('Input:', value)
|
|
104
|
+
}
|
|
105
|
+
const handleChange = (value) => {
|
|
106
|
+
console.log('Change:', value)
|
|
107
|
+
}
|
|
108
|
+
const handleFocus = () => {
|
|
109
|
+
console.log('Focus')
|
|
110
|
+
}
|
|
111
|
+
const handleBlur = () => {
|
|
112
|
+
console.log('Blur')
|
|
113
|
+
}
|
|
114
|
+
</script>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Key Points
|
|
118
|
+
|
|
119
|
+
- Use v-model for two-way binding
|
|
120
|
+
- Support multiple input types
|
|
121
|
+
- Support disabled, readonly, clearable
|
|
122
|
+
- Prefix and suffix slots
|
|
123
|
+
- Multiple event handlers
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Message Component
|
|
2
|
+
|
|
3
|
+
**官方文档**: https://element-plus.org/en-US/component/message.html
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Instructions
|
|
7
|
+
|
|
8
|
+
This example demonstrates the Message component in Element Plus.
|
|
9
|
+
|
|
10
|
+
### Key Concepts
|
|
11
|
+
|
|
12
|
+
- Message types
|
|
13
|
+
- Message duration
|
|
14
|
+
- Message positioning
|
|
15
|
+
- Message methods
|
|
16
|
+
|
|
17
|
+
### Example: Message API
|
|
18
|
+
|
|
19
|
+
```vue
|
|
20
|
+
<template>
|
|
21
|
+
<el-button @click="showMessage">Show Message</el-button>
|
|
22
|
+
</template>
|
|
23
|
+
|
|
24
|
+
<script setup>
|
|
25
|
+
import { ElMessage } from 'element-plus'
|
|
26
|
+
|
|
27
|
+
const showMessage = () => {
|
|
28
|
+
ElMessage.success('Success message')
|
|
29
|
+
}
|
|
30
|
+
</script>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Example: Message Types
|
|
34
|
+
|
|
35
|
+
```vue
|
|
36
|
+
<script setup>
|
|
37
|
+
import { ElMessage } from 'element-plus'
|
|
38
|
+
|
|
39
|
+
// Success
|
|
40
|
+
ElMessage.success('Success message')
|
|
41
|
+
|
|
42
|
+
// Warning
|
|
43
|
+
ElMessage.warning('Warning message')
|
|
44
|
+
|
|
45
|
+
// Error
|
|
46
|
+
ElMessage.error('Error message')
|
|
47
|
+
|
|
48
|
+
// Info
|
|
49
|
+
ElMessage.info('Info message')
|
|
50
|
+
</script>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Example: Message Options
|
|
54
|
+
|
|
55
|
+
```vue
|
|
56
|
+
<script setup>
|
|
57
|
+
import { ElMessage } from 'element-plus'
|
|
58
|
+
|
|
59
|
+
ElMessage({
|
|
60
|
+
message: 'Custom message',
|
|
61
|
+
type: 'success',
|
|
62
|
+
duration: 3000,
|
|
63
|
+
showClose: true,
|
|
64
|
+
center: true
|
|
65
|
+
})
|
|
66
|
+
</script>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Example: Message Positioning
|
|
70
|
+
|
|
71
|
+
```vue
|
|
72
|
+
<script setup>
|
|
73
|
+
import { ElMessage } from 'element-plus'
|
|
74
|
+
|
|
75
|
+
ElMessage({
|
|
76
|
+
message: 'Top message',
|
|
77
|
+
position: 'top'
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
ElMessage({
|
|
81
|
+
message: 'Top-right message',
|
|
82
|
+
position: 'top-right'
|
|
83
|
+
})
|
|
84
|
+
</script>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Key Points
|
|
88
|
+
|
|
89
|
+
- Use ElMessage API for programmatic messages
|
|
90
|
+
- Multiple types: success, warning, error, info
|
|
91
|
+
- Configure duration and position
|
|
92
|
+
- Auto-close by default
|
|
93
|
+
- Support custom message content
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Components Overview
|
|
2
|
+
|
|
3
|
+
**官方文档**: https://element-plus.org/en-US/component/overview.html
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Instructions
|
|
7
|
+
|
|
8
|
+
This example provides an overview of Element Plus components.
|
|
9
|
+
|
|
10
|
+
### Key Concepts
|
|
11
|
+
|
|
12
|
+
- Component categories
|
|
13
|
+
- Component list
|
|
14
|
+
- Component usage
|
|
15
|
+
- Component features
|
|
16
|
+
|
|
17
|
+
### Example: Component Categories
|
|
18
|
+
|
|
19
|
+
**Basic Components (基础组件)**:
|
|
20
|
+
- Button, Link, Icon
|
|
21
|
+
|
|
22
|
+
**Form Components (表单组件)**:
|
|
23
|
+
- Input, Textarea, Select, Switch, Checkbox, Radio, DatePicker, TimePicker, Upload, Rate, ColorPicker, Transfer, Form
|
|
24
|
+
|
|
25
|
+
**Data Display (数据展示)**:
|
|
26
|
+
- Table, Tag, Progress, Tree, Pagination, Badge, Avatar, Skeleton, Empty, Descriptions, Result, Statistic
|
|
27
|
+
|
|
28
|
+
**Navigation (导航)**:
|
|
29
|
+
- NavMenu, Tabs, Breadcrumb, PageHeader, Affix, Backtop
|
|
30
|
+
|
|
31
|
+
**Feedback (反馈)**:
|
|
32
|
+
- Alert, Loading, Message, MessageBox, Notification, Popover, Tooltip, Popconfirm, Drawer, Dialog
|
|
33
|
+
|
|
34
|
+
**Layout (布局)**:
|
|
35
|
+
- Row, Col, Container, Aside, Main, Header, Footer
|
|
36
|
+
|
|
37
|
+
**Others (其他)**:
|
|
38
|
+
- Divider, Calendar, Image, Timeline, Card, Carousel, Collapse, InfiniteScroll
|
|
39
|
+
|
|
40
|
+
### Example: Component Registration
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
// Full import
|
|
44
|
+
import ElementPlus from 'element-plus'
|
|
45
|
+
app.use(ElementPlus)
|
|
46
|
+
|
|
47
|
+
// On-demand import
|
|
48
|
+
import { ElButton, ElInput } from 'element-plus'
|
|
49
|
+
app.component(ElButton.name, ElButton)
|
|
50
|
+
app.component(ElInput.name, ElInput)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Key Points
|
|
54
|
+
|
|
55
|
+
- 60+ components available
|
|
56
|
+
- Organized by category
|
|
57
|
+
- Support full import and on-demand import
|
|
58
|
+
- TypeScript support
|
|
59
|
+
- Consistent API design
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Select Component
|
|
2
|
+
|
|
3
|
+
**官方文档**: https://element-plus.org/en-US/component/select.html
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Instructions
|
|
7
|
+
|
|
8
|
+
This example demonstrates the Select component in Element Plus.
|
|
9
|
+
|
|
10
|
+
### Key Concepts
|
|
11
|
+
|
|
12
|
+
- Select options
|
|
13
|
+
- Select multiple
|
|
14
|
+
- Select filtering
|
|
15
|
+
- Select events
|
|
16
|
+
|
|
17
|
+
### Example: Basic Select
|
|
18
|
+
|
|
19
|
+
```vue
|
|
20
|
+
<template>
|
|
21
|
+
<el-select v-model="value" placeholder="Select">
|
|
22
|
+
<el-option label="Option 1" value="1" />
|
|
23
|
+
<el-option label="Option 2" value="2" />
|
|
24
|
+
<el-option label="Option 3" value="3" />
|
|
25
|
+
</el-select>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<script setup>
|
|
29
|
+
import { ref } from 'vue'
|
|
30
|
+
|
|
31
|
+
const value = ref('')
|
|
32
|
+
</script>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Example: Select with Options Array
|
|
36
|
+
|
|
37
|
+
```vue
|
|
38
|
+
<template>
|
|
39
|
+
<el-select v-model="value" placeholder="Select">
|
|
40
|
+
<el-option
|
|
41
|
+
v-for="item in options"
|
|
42
|
+
:key="item.value"
|
|
43
|
+
:label="item.label"
|
|
44
|
+
:value="item.value"
|
|
45
|
+
/>
|
|
46
|
+
</el-select>
|
|
47
|
+
</template>
|
|
48
|
+
|
|
49
|
+
<script setup>
|
|
50
|
+
import { ref } from 'vue'
|
|
51
|
+
|
|
52
|
+
const value = ref('')
|
|
53
|
+
const options = ref([
|
|
54
|
+
{ label: 'Option 1', value: '1' },
|
|
55
|
+
{ label: 'Option 2', value: '2' },
|
|
56
|
+
{ label: 'Option 3', value: '3' }
|
|
57
|
+
])
|
|
58
|
+
</script>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Example: Multiple Select
|
|
62
|
+
|
|
63
|
+
```vue
|
|
64
|
+
<template>
|
|
65
|
+
<el-select v-model="value" multiple placeholder="Select multiple">
|
|
66
|
+
<el-option label="Option 1" value="1" />
|
|
67
|
+
<el-option label="Option 2" value="2" />
|
|
68
|
+
<el-option label="Option 3" value="3" />
|
|
69
|
+
</el-select>
|
|
70
|
+
</template>
|
|
71
|
+
|
|
72
|
+
<script setup>
|
|
73
|
+
import { ref } from 'vue'
|
|
74
|
+
|
|
75
|
+
const value = ref([])
|
|
76
|
+
</script>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Example: Filterable Select
|
|
80
|
+
|
|
81
|
+
```vue
|
|
82
|
+
<template>
|
|
83
|
+
<el-select
|
|
84
|
+
v-model="value"
|
|
85
|
+
filterable
|
|
86
|
+
placeholder="Search and select"
|
|
87
|
+
>
|
|
88
|
+
<el-option
|
|
89
|
+
v-for="item in options"
|
|
90
|
+
:key="item.value"
|
|
91
|
+
:label="item.label"
|
|
92
|
+
:value="item.value"
|
|
93
|
+
/>
|
|
94
|
+
</el-select>
|
|
95
|
+
</template>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Example: Select Events
|
|
99
|
+
|
|
100
|
+
```vue
|
|
101
|
+
<template>
|
|
102
|
+
<el-select
|
|
103
|
+
v-model="value"
|
|
104
|
+
@change="handleChange"
|
|
105
|
+
@visible-change="handleVisibleChange"
|
|
106
|
+
>
|
|
107
|
+
<el-option label="Option 1" value="1" />
|
|
108
|
+
<el-option label="Option 2" value="2" />
|
|
109
|
+
</el-select>
|
|
110
|
+
</template>
|
|
111
|
+
|
|
112
|
+
<script setup>
|
|
113
|
+
import { ref } from 'vue'
|
|
114
|
+
|
|
115
|
+
const value = ref('')
|
|
116
|
+
|
|
117
|
+
const handleChange = (val) => {
|
|
118
|
+
console.log('Changed:', val)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const handleVisibleChange = (visible) => {
|
|
122
|
+
console.log('Visible:', visible)
|
|
123
|
+
}
|
|
124
|
+
</script>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Key Points
|
|
128
|
+
|
|
129
|
+
- Use v-model for selected value
|
|
130
|
+
- Use el-option for options
|
|
131
|
+
- Support multiple selection
|
|
132
|
+
- Enable filtering with filterable
|
|
133
|
+
- Handle change and visible-change events
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Table Component
|
|
2
|
+
|
|
3
|
+
**官方文档**: https://element-plus.org/en-US/component/table.html
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Instructions
|
|
7
|
+
|
|
8
|
+
This example demonstrates the Table component in Element Plus.
|
|
9
|
+
|
|
10
|
+
### Key Concepts
|
|
11
|
+
|
|
12
|
+
- Table data
|
|
13
|
+
- Table columns
|
|
14
|
+
- Table selection
|
|
15
|
+
- Table sorting
|
|
16
|
+
- Table filtering
|
|
17
|
+
- Table pagination
|
|
18
|
+
|
|
19
|
+
### Example: Basic Table
|
|
20
|
+
|
|
21
|
+
```vue
|
|
22
|
+
<template>
|
|
23
|
+
<el-table :data="tableData">
|
|
24
|
+
<el-table-column prop="name" label="Name" />
|
|
25
|
+
<el-table-column prop="email" label="Email" />
|
|
26
|
+
<el-table-column prop="age" label="Age" />
|
|
27
|
+
</el-table>
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<script setup>
|
|
31
|
+
import { ref } from 'vue'
|
|
32
|
+
|
|
33
|
+
const tableData = ref([
|
|
34
|
+
{ name: 'John', email: 'john@example.com', age: 25 },
|
|
35
|
+
{ name: 'Jane', email: 'jane@example.com', age: 30 }
|
|
36
|
+
])
|
|
37
|
+
</script>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Example: Table with Selection
|
|
41
|
+
|
|
42
|
+
```vue
|
|
43
|
+
<template>
|
|
44
|
+
<el-table
|
|
45
|
+
:data="tableData"
|
|
46
|
+
@selection-change="handleSelectionChange"
|
|
47
|
+
>
|
|
48
|
+
<el-table-column type="selection" width="55" />
|
|
49
|
+
<el-table-column prop="name" label="Name" />
|
|
50
|
+
<el-table-column prop="email" label="Email" />
|
|
51
|
+
</el-table>
|
|
52
|
+
</template>
|
|
53
|
+
|
|
54
|
+
<script setup>
|
|
55
|
+
import { ref } from 'vue'
|
|
56
|
+
|
|
57
|
+
const tableData = ref([
|
|
58
|
+
{ name: 'John', email: 'john@example.com' },
|
|
59
|
+
{ name: 'Jane', email: 'jane@example.com' }
|
|
60
|
+
])
|
|
61
|
+
|
|
62
|
+
const handleSelectionChange = (selection) => {
|
|
63
|
+
console.log('Selected:', selection)
|
|
64
|
+
}
|
|
65
|
+
</script>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Example: Table with Sorting
|
|
69
|
+
|
|
70
|
+
```vue
|
|
71
|
+
<template>
|
|
72
|
+
<el-table :data="tableData" default-sort="{ prop: 'age', order: 'ascending' }">
|
|
73
|
+
<el-table-column prop="name" label="Name" sortable />
|
|
74
|
+
<el-table-column prop="age" label="Age" sortable />
|
|
75
|
+
</el-table>
|
|
76
|
+
</template>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Example: Table with Filtering
|
|
80
|
+
|
|
81
|
+
```vue
|
|
82
|
+
<template>
|
|
83
|
+
<el-table :data="tableData">
|
|
84
|
+
<el-table-column prop="status" label="Status" :filters="filters" :filter-method="filterMethod">
|
|
85
|
+
<template #default="{ row }">
|
|
86
|
+
<el-tag :type="row.status === 'active' ? 'success' : 'info'">
|
|
87
|
+
{{ row.status }}
|
|
88
|
+
</el-tag>
|
|
89
|
+
</template>
|
|
90
|
+
</el-table-column>
|
|
91
|
+
</el-table>
|
|
92
|
+
</template>
|
|
93
|
+
|
|
94
|
+
<script setup>
|
|
95
|
+
import { ref } from 'vue'
|
|
96
|
+
|
|
97
|
+
const tableData = ref([
|
|
98
|
+
{ name: 'John', status: 'active' },
|
|
99
|
+
{ name: 'Jane', status: 'inactive' }
|
|
100
|
+
])
|
|
101
|
+
|
|
102
|
+
const filters = [
|
|
103
|
+
{ text: 'Active', value: 'active' },
|
|
104
|
+
{ text: 'Inactive', value: 'inactive' }
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
const filterMethod = (value, row) => {
|
|
108
|
+
return row.status === value
|
|
109
|
+
}
|
|
110
|
+
</script>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Example: Table with Pagination
|
|
114
|
+
|
|
115
|
+
```vue
|
|
116
|
+
<template>
|
|
117
|
+
<el-table :data="paginatedData">
|
|
118
|
+
<el-table-column prop="name" label="Name" />
|
|
119
|
+
<el-table-column prop="email" label="Email" />
|
|
120
|
+
</el-table>
|
|
121
|
+
<el-pagination
|
|
122
|
+
v-model:current-page="currentPage"
|
|
123
|
+
v-model:page-size="pageSize"
|
|
124
|
+
:total="total"
|
|
125
|
+
layout="total, sizes, prev, pager, next, jumper"
|
|
126
|
+
@size-change="handleSizeChange"
|
|
127
|
+
@current-change="handleCurrentChange"
|
|
128
|
+
/>
|
|
129
|
+
</template>
|
|
130
|
+
|
|
131
|
+
<script setup>
|
|
132
|
+
import { ref, computed } from 'vue'
|
|
133
|
+
|
|
134
|
+
const tableData = ref([
|
|
135
|
+
{ name: 'John', email: 'john@example.com' },
|
|
136
|
+
{ name: 'Jane', email: 'jane@example.com' },
|
|
137
|
+
// ... more data
|
|
138
|
+
])
|
|
139
|
+
|
|
140
|
+
const currentPage = ref(1)
|
|
141
|
+
const pageSize = ref(10)
|
|
142
|
+
const total = ref(100)
|
|
143
|
+
|
|
144
|
+
const paginatedData = computed(() => {
|
|
145
|
+
const start = (currentPage.value - 1) * pageSize.value
|
|
146
|
+
const end = start + pageSize.value
|
|
147
|
+
return tableData.value.slice(start, end)
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
const handleSizeChange = (val) => {
|
|
151
|
+
pageSize.value = val
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const handleCurrentChange = (val) => {
|
|
155
|
+
currentPage.value = val
|
|
156
|
+
}
|
|
157
|
+
</script>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Key Points
|
|
161
|
+
|
|
162
|
+
- Use :data for table data
|
|
163
|
+
- Define columns with el-table-column
|
|
164
|
+
- Support selection, sorting, filtering
|
|
165
|
+
- Use pagination for large datasets
|
|
166
|
+
- Customize columns with slots
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Design Guidelines
|
|
2
|
+
|
|
3
|
+
## Instructions
|
|
4
|
+
|
|
5
|
+
This example covers Element Plus design guidelines and principles.
|
|
6
|
+
|
|
7
|
+
### Key Concepts
|
|
8
|
+
|
|
9
|
+
- Design principles
|
|
10
|
+
- Color system
|
|
11
|
+
- Typography
|
|
12
|
+
- Spacing
|
|
13
|
+
- Components
|
|
14
|
+
|
|
15
|
+
### Example: Design Principles
|
|
16
|
+
|
|
17
|
+
Element Plus follows Element Design principles:
|
|
18
|
+
- **Consistency**: Consistent design language
|
|
19
|
+
- **Feedback**: Clear user feedback
|
|
20
|
+
- **Efficiency**: Efficient user experience
|
|
21
|
+
- **Controllability**: User control
|
|
22
|
+
|
|
23
|
+
### Example: Color System
|
|
24
|
+
|
|
25
|
+
```css
|
|
26
|
+
/* Primary Color */
|
|
27
|
+
--el-color-primary: #409eff;
|
|
28
|
+
|
|
29
|
+
/* Success Color */
|
|
30
|
+
--el-color-success: #67c23a;
|
|
31
|
+
|
|
32
|
+
/* Warning Color */
|
|
33
|
+
--el-color-warning: #e6a23c;
|
|
34
|
+
|
|
35
|
+
/* Danger Color */
|
|
36
|
+
--el-color-danger: #f56c6c;
|
|
37
|
+
|
|
38
|
+
/* Info Color */
|
|
39
|
+
--el-color-info: #909399;
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Example: Typography
|
|
43
|
+
|
|
44
|
+
```vue
|
|
45
|
+
<template>
|
|
46
|
+
<h1>Heading 1</h1>
|
|
47
|
+
<h2>Heading 2</h2>
|
|
48
|
+
<h3>Heading 3</h3>
|
|
49
|
+
<p>Body text</p>
|
|
50
|
+
</template>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Example: Spacing
|
|
54
|
+
|
|
55
|
+
Element Plus uses consistent spacing scale:
|
|
56
|
+
- xs: 4px
|
|
57
|
+
- sm: 8px
|
|
58
|
+
- md: 16px
|
|
59
|
+
- lg: 24px
|
|
60
|
+
- xl: 32px
|
|
61
|
+
|
|
62
|
+
### Key Points
|
|
63
|
+
|
|
64
|
+
- Follow Element Design principles
|
|
65
|
+
- Use consistent colors
|
|
66
|
+
- Apply proper typography
|
|
67
|
+
- Use spacing scale
|
|
68
|
+
- Maintain design consistency
|