2
0
mirror of https://github.com/tenrok/vue-select.git synced 2026-06-22 10:30:34 +03:00

go ahead and SSR, but don't put a button inside a button (#864)

This commit is contained in:
Jeff Sagal
2019-04-29 12:48:49 -07:00
committed by GitHub
parent 43cd6d34c3
commit ab99763981
4 changed files with 19 additions and 35 deletions
@@ -11,7 +11,7 @@
export default { export default {
data: () => ({ data: () => ({
Deselect: { Deselect: {
render: createElement => createElement('button', 'Clear'), render: createElement => createElement('span', ''),
}, },
}), }),
}; };
@@ -1,20 +1,18 @@
<template> <template>
<v-select <v-select
:options="['Vue.js', 'React', 'Angular']" :options="['Vue.js', 'React', 'Angular']"
:components="components" :components="{Deselect, OpenIndicator}"
/> />
</template> </template>
<script> <script>
export default { export default {
data: () => ({ data: () => ({
components: { Deselect: {
Deselect: { render: createElement => createElement('span', '❌'),
render: createElement => createElement('button', '❌'), },
}, OpenIndicator: {
OpenIndicator: { render: createElement => createElement('span', '🔽'),
render: createElement => createElement('span', '🔽'),
},
}, },
}), }),
}; };
@@ -1,29 +1,21 @@
<template> <template>
<div> <div>
<v-select <v-select
multiple multiple
v-model="selected" v-model="selected"
:options="['Canada', 'United States']" :options="['Canada', 'United States']"
:components="{Deselect}" :components="{Deselect}"
/> />
</div> </div>
</template> </template>
<script> <script>
import Vue from 'vue';
export default { export default {
data: () => ({ data: () => ({
selected: ['Canada'] selected: ['Canada'],
}), Deselect: {
computed: { render: createElement => createElement('span', '❌'),
Deselect () {
return Vue.component('Deselect', {
render (createElement) {
return createElement('button', 'Clear');
},
});
}, },
}, }),
}; };
</script> </script>
+4 -10
View File
@@ -22,15 +22,13 @@ a simple `<button>Clear</button>` instead.
export default { export default {
data: () => ({ data: () => ({
Deselect: { Deselect: {
render: createElement => createElement('button', 'Clear'), render: createElement => createElement('span', '❌'),
}, },
}), }),
}; };
``` ```
<ClientOnly>
<ClearButtonOverride /> <ClearButtonOverride />
</ClientOnly>
The same approach applies for `multiple` selects: The same approach applies for `multiple` selects:
@@ -55,9 +53,7 @@ export default {
}; };
``` ```
<ClientOnly> <OpenIndicatorOverride />
<OpenIndicatorOverride />
</ClientOnly>
## Setting Globally at Registration ## Setting Globally at Registration
@@ -71,7 +67,7 @@ import vSelect from 'vue-select';
// Set the components prop default to return our fresh components // Set the components prop default to return our fresh components
vSelect.props.components.default = () => ({ vSelect.props.components.default = () => ({
Deselect: { Deselect: {
render: createElement => createElement('button', '❌'), render: createElement => createElement('span', '❌'),
}, },
OpenIndicator: { OpenIndicator: {
render: createElement => createElement('span', '🔽'), render: createElement => createElement('span', '🔽'),
@@ -82,7 +78,5 @@ vSelect.props.components.default = () => ({
Vue.component(vSelect) Vue.component(vSelect)
``` ```
<ClientOnly> <CustomComponentRegistration />
<CustomComponentRegistration />
</ClientOnly>