refactor(frontend): use composition api

This commit is contained in:
syuilo 2023-05-14 12:23:39 +09:00
parent 3d4a90b08a
commit 0717afc312
8 changed files with 495 additions and 621 deletions

View file

@ -28,54 +28,38 @@
</div>
</template>
<script lang="ts">
import { defineComponent, reactive } from 'vue';
<script lang="ts" setup>
import { reactive } from 'vue';
import number from '@/filters/number';
import XValue from '@/components/MkObjectView.value.vue';
export default defineComponent({
name: 'XValue',
const props = defineProps<{
value: any;
}>();
props: {
value: {
required: true,
},
},
const collapsed = reactive({});
setup(props) {
const collapsed = reactive({});
if (isObject(props.value)) {
for (const key in props.value) {
collapsed[key] = collapsable(props.value[key]);
}
}
if (isObject(props.value)) {
for (const key in props.value) {
collapsed[key] = collapsable(props.value[key]);
}
}
function isObject(v): boolean {
return typeof v === 'object' && !Array.isArray(v) && v !== null;
}
function isObject(v): boolean {
return typeof v === 'object' && !Array.isArray(v) && v !== null;
}
function isArray(v): boolean {
return Array.isArray(v);
}
function isArray(v): boolean {
return Array.isArray(v);
}
function isEmpty(v): boolean {
return (isArray(v) && v.length === 0) || (isObject(v) && Object.keys(v).length === 0);
}
function isEmpty(v): boolean {
return (isArray(v) && v.length === 0) || (isObject(v) && Object.keys(v).length === 0);
}
function collapsable(v): boolean {
return (isObject(v) || isArray(v)) && !isEmpty(v);
}
return {
number,
collapsed,
isObject,
isArray,
isEmpty,
collapsable,
};
},
});
function collapsable(v): boolean {
return (isObject(v) || isArray(v)) && !isEmpty(v);
}
</script>
<style lang="scss" scoped>