Improve MisskeyPages

* ifブロック を追加
* ボタンやスイッチなどのテキストに変数使えるようにした
This commit is contained in:
syuilo 2019-04-30 06:40:02 +09:00
parent a60d83b101
commit 2e8e5c2751
No known key found for this signature in database
GPG key ID: BDC4C49D06AB9D69
16 changed files with 227 additions and 65 deletions

View file

@ -10,10 +10,11 @@ import XImage from './page.image.vue';
import XButton from './page.button.vue';
import XInput from './page.input.vue';
import XSwitch from './page.switch.vue';
import XIf from './page.if.vue';
export default Vue.extend({
components: {
XText, XSection, XImage, XButton, XInput, XSwitch
XText, XSection, XImage, XButton, XInput, XSwitch, XIf
},
props: {

View file

@ -1,6 +1,6 @@
<template>
<div>
<ui-button class="kudkigyw" @click="click()">{{ value.text }}</ui-button>
<ui-button class="kudkigyw" @click="click()">{{ script.interpolate(value.text) }}</ui-button>
</div>
</template>

View file

@ -0,0 +1,30 @@
<template>
<div v-show="script.vars.find(x => x.name === value.var).value">
<x-block v-for="child in value.children" :value="child" :page="page" :script="script" :key="child.id" :h="h"/>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
props: {
value: {
required: true
},
script: {
required: true
},
page: {
required: true
},
h: {
required: true
}
},
beforeCreate() {
this.$options.components.XBlock = require('./page.block.vue').default
},
});
</script>

View file

@ -1,6 +1,6 @@
<template>
<div>
<ui-input class="kudkigyw" v-model="v" :type="value.inputType">{{ value.text }}</ui-input>
<ui-input class="kudkigyw" v-model="v" :type="value.inputType">{{ script.interpolate(value.text) }}</ui-input>
</div>
</template>

View file

@ -1,6 +1,6 @@
<template>
<div class="hkcxmtwj">
<ui-switch v-model="v">{{ value.text }}</ui-switch>
<ui-switch v-model="v">{{ script.interpolate(value.text) }}</ui-switch>
</div>
</template>

View file

@ -38,6 +38,7 @@ class Script {
}
public interpolate(str: string) {
if (str == null) return null;
return str.replace(/\{(.+?)\}/g, match => {
const v = this.vars.find(x => x.name === match.slice(1, -1).trim()).value;
return v == null ? 'NULL' : v.toString();