Skip to content

Commit 19d6f8e

Browse files
committed
improve sample and fix documentation on inheritance order as mixins-props override the props of the extended vue
1 parent 614eeb2 commit 19d6f8e

File tree

4 files changed

+63
-52
lines changed

4 files changed

+63
-52
lines changed

demo/components/DemoInheritance-component.vue

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,11 @@
11
<template>
22
<div class="card card--primary">
33
<el-table :data="tableData" style="width: 100%">
4-
<el-table-column prop="prop" label="Prop name">
4+
<el-table-column prop="prop" label="Prop name" width="150">
55
</el-table-column>
66
<el-table-column prop="value" label="Value">
7-
<template scope="scope">
8-
<div slot="reference">
9-
<strong>{{ scope.row.value }}</strong>
10-
</div>
11-
</template>
127
</el-table-column>
13-
<el-table-column prop="type" label="typeof">
14-
<template scope="scope">
15-
<div slot="reference">
16-
<el-tag type="gray">{{ scope.row.type }}</el-tag>
17-
</div>
18-
</template>
8+
<el-table-column prop="type" label="typeof" width="100">
199
</el-table-column>
2010
<el-table-column prop="default" label="default">
2111
</el-table-column>
@@ -25,30 +15,34 @@
2515

2616
<script>
2717
export default {
18+
extends: {
19+
name: 'extended-class',
20+
props: ['fromExtended']
21+
},
2822
mixins: [{
23+
name: 'mixin-one',
2924
props: ['fromMixinOne']
3025
}, {
3126
props: {
27+
name: 'mixin-two',
3228
fromMixinOne: {
3329
type: String,
34-
default: () => 'override mixinOne by mixinTwo'
30+
default: () => 'mixin overrides mixin-prop'
31+
},
32+
fromExtended: {
33+
type: String,
34+
default: () => 'mixin overrides extended-prop'
3535
},
3636
fromMixinTwo: {
3737
type: String,
38-
default: () => 'extends will be overriding this'
38+
default: () => 'mixin sets new prop'
3939
}
4040
}
4141
}],
42-
extends: {
43-
props: {
44-
fromMixinTwo: {
45-
type: String,
46-
default: () => 'extends override of mixinTwo prop'
47-
},
48-
fromExtended: {
49-
type: String,
50-
default: () => 'instance will be overriding this'
51-
}
42+
props: {
43+
fromMixinTwo: {
44+
type: String,
45+
default: () => 'instance overrides mixin-prop'
5246
}
5347
},
5448
methods: {

demo/components/DemoInheritance-docs.vue

Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@
33
<h2>Inheritance demo</h2>
44

55
<div class="demo-card">
6-
<demo-inheritance from-mixin-one="fromMixinOne is set via attributes"></demo-inheritance>
6+
<div class="el-form-item">
7+
<label class="el-form-item__label">fromMixinOne</label>
8+
<div class="el-form-item__content">
9+
<el-input v-model="compProps.fromMixinOne"></el-input>
10+
</div>
11+
</div>
12+
<demo-inheritance
13+
:from-mixin-one="compProps.fromMixinOne"
14+
></demo-inheritance>
715
</div>
816

917
<el-collapse v-model="activeNames">
@@ -45,49 +53,58 @@
4553
return {
4654
message: 'Hello Vue!',
4755
activeNames: ['1'],
56+
compProps: {
57+
fromMixinOne: 'changed via attributes'
58+
},
4859
HTML: (
4960
`<demo-inheritance
50-
from-mixin-one="fromMixinOne is set via attributes">
61+
:from-mixin-one="fromMixinOne">
5162
</demo-inheritance>`
5263
),
5364
vueTemplate: (
54-
`<div>
55-
<h4>{{ message }}</h4>
56-
57-
<el-table :data="tableData">
58-
<el-table-column prop="prop" label="Prop name"></el-table-column>
59-
<el-table-column prop="value" label="Value"></el-table-column>
60-
<el-table-column prop="type" label="typeof"></el-table-column>
61-
<el-table-column prop="default" label="default"></el-table-column>
62-
</el-table>
63-
</div>`
65+
`<div class="card card--primary">
66+
<el-table :data="tableData" style="width: 100%">
67+
<el-table-column prop="prop" label="Prop name" width="150">
68+
</el-table-column>
69+
<el-table-column prop="value" label="Value">
70+
</el-table-column>
71+
<el-table-column prop="type" label="typeof" width="100">
72+
</el-table-column>
73+
<el-table-column prop="default" label="default">
74+
</el-table-column>
75+
</el-table>
76+
</div>`
6477
),
6578
vueScript: (
6679
`export default {
80+
extends: {
81+
name: 'extended-class',
82+
props: ['fromExtended']
83+
},
6784
mixins: [{
85+
name: 'mixin-one',
6886
props: ['fromMixinOne']
6987
}, {
7088
props: {
89+
name: 'mixin-two',
7190
fromMixinOne: {
7291
type: String,
73-
default: () => 'override mixinOne by mixinTwo'
92+
default: () => 'mixin overrides mixin-prop'
93+
},
94+
fromExtended: {
95+
type: String,
96+
default: () => 'mixin overrides extended-prop'
7497
},
7598
fromMixinTwo: {
7699
type: String,
77-
default: () => 'extends will be overriding this'
100+
default: () => 'mixin sets new prop'
78101
}
79102
}
80103
}],
81-
extends: {
82-
props: {
83-
fromMixinTwo: {
84-
type: String,
85-
default: () => 'extends override of mixinTwo prop'
86-
},
87-
fromExtended: {
88-
type: String,
89-
default: () => 'instance will be overriding this'
90-
}
104+
props: {
105+
fromMixinTwo: {
106+
type: String,
107+
default: () => 'instance overrides mixin-prop'
91108
}
92109
},
93110
methods: {

docs/demo.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/demo.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)