schlechtenburg/packages/core/lib/App.tsx

53 lines
1.4 KiB
TypeScript
Raw Normal View History

2020-12-27 21:32:43 +00:00
import { defineComponent, reactive, ref } from 'vue';
import Schlechtenburg from '/@components/Schlechtenburg';
2020-12-30 01:32:46 +00:00
import { Block } from '/@/blocks';
import { SbMode } from '/@/mode';
2020-05-20 14:21:08 +00:00
2020-12-30 01:32:46 +00:00
import initialData from './initial-data';
2020-05-27 15:32:35 +00:00
2020-05-20 14:21:08 +00:00
import './App.scss';
export default defineComponent({
name: 'App',
setup() {
2020-05-27 13:57:57 +00:00
const activeTab = ref('edit');
2020-12-30 01:32:46 +00:00
const block: Block<any> = reactive(initialData);
2020-05-20 14:21:08 +00:00
2020-05-25 21:10:21 +00:00
return () => (
2020-05-20 14:21:08 +00:00
<div id="app">
2020-05-27 13:57:57 +00:00
<select
value={activeTab.value}
2020-12-30 01:32:46 +00:00
onChange={($event: Event) => { activeTab.value = ($event.target as HTMLSelectElement).value; }}
2020-05-27 13:57:57 +00:00
>
<option>edit</option>
<option>display</option>
2020-12-30 01:32:46 +00:00
<option>data</option>
2020-05-27 13:57:57 +00:00
</select>
2020-12-27 21:32:43 +00:00
2020-12-30 01:32:46 +00:00
{(() => {
switch (activeTab.value) {
case SbMode.Edit:
return <Schlechtenburg
block={block}
eventUpdate={(newBlock: Block<any>) => {
block.data = newBlock.data;
}}
key="edit"
mode="edit"
/>;
case SbMode.Edit:
return <Schlechtenburg
block={block}
key="display"
mode="display"
/>;
case 'data':
return <pre><code>{JSON.stringify(block, null, 2)}</code></pre>;
}
})()}
2020-05-20 14:21:08 +00:00
</div>
);
},
});