summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkRadios.vue
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-05-14 12:23:39 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-05-14 12:23:39 +0900
commit0717afc3124a5d7434af3df31dfa54cbf420f109 (patch)
tree6182a31c905872a6cd25f28f9c97322f6f1579e4 /packages/frontend/src/components/MkRadios.vue
parentrefactor(frontend): use composition api (diff)
downloadmisskey-0717afc3124a5d7434af3df31dfa54cbf420f109.tar.gz
misskey-0717afc3124a5d7434af3df31dfa54cbf420f109.tar.bz2
misskey-0717afc3124a5d7434af3df31dfa54cbf420f109.zip
refactor(frontend): use composition api
Diffstat (limited to 'packages/frontend/src/components/MkRadios.vue')
-rw-r--r--packages/frontend/src/components/MkRadios.vue36
1 files changed, 13 insertions, 23 deletions
diff --git a/packages/frontend/src/components/MkRadios.vue b/packages/frontend/src/components/MkRadios.vue
index e2240fb4e1..84be10078a 100644
--- a/packages/frontend/src/components/MkRadios.vue
+++ b/packages/frontend/src/components/MkRadios.vue
@@ -1,37 +1,27 @@
<script lang="ts">
-import { VNode, defineComponent, h } from 'vue';
+import { VNode, defineComponent, h, ref, watch } from 'vue';
import MkRadio from './MkRadio.vue';
export default defineComponent({
- components: {
- MkRadio,
- },
props: {
modelValue: {
required: false,
},
},
- data() {
- return {
- value: this.modelValue,
- };
- },
- watch: {
- value() {
- this.$emit('update:modelValue', this.value);
- },
- },
- render() {
- console.log(this.$slots, this.$slots.label && this.$slots.label());
- if (!this.$slots.default) return null;
- let options = this.$slots.default();
- const label = this.$slots.label && this.$slots.label();
- const caption = this.$slots.caption && this.$slots.caption();
+ setup(props, context) {
+ const value = ref(props.modelValue);
+ watch(value, () => {
+ context.emit('update:modelValue', value.value);
+ });
+ if (!context.slots.default) return null;
+ let options = context.slots.default();
+ const label = context.slots.label && context.slots.label();
+ const caption = context.slots.caption && context.slots.caption();
// なぜかFragmentになることがあるため
if (options.length === 1 && options[0].props == null) options = options[0].children as VNode[];
- return h('div', {
+ return () => h('div', {
class: 'novjtcto',
}, [
...(label ? [h('div', {
@@ -42,8 +32,8 @@ export default defineComponent({
}, options.map(option => h(MkRadio, {
key: option.key,
value: option.props?.value,
- modelValue: this.value,
- 'onUpdate:modelValue': value => this.value = value,
+ modelValue: value.value,
+ 'onUpdate:modelValue': _v => value.value = _v,
}, () => option.children)),
),
...(caption ? [h('div', {