import React from 'react';
import {StyleSheet, View, Text , Button } from 'react-native';
import { Icon } from 'react-native-elements'
import { TextInput } from 'react-native';
import BaseSystem from './System'
import { Ionicons } from '@expo/vector-icons';
class Menu extends BaseSystem {
constructor() {
super();
this.items = [];
}
addItem(item) {
this.items.push(item);
return this;
}
show() { this.visible = true; this.forceUpdate() }
hide() { this.visible = false; this.forceUpdate() }
toggle() { this.visible = !this.visible; this.forceUpdate() }
render() {
return this.visible ?
this.hide()}>
{this.items.map((item) => {
let {
text,
...rest
} = item;
return
{item.text}
})}
: null;
}
}
export default class MainBar extends BaseSystem {
constructor(CS){
super();
this.__save = null
this.CoreSystem = CS;
this.Menu = new Menu();
this.Menu.addItem({
text: "New page",
onClick: () => this.createPage()
}).addItem({
text: "Save",
onClick: () => this.save()
}).addItem({
text: "Export",
onClick: () => this.export()
}).onUpdate(() => this.forceUpdate());
}
export() {
let json = JSON.stringify(this.CoreSystem.export());
console.log(json);
}
onSave(fn){
this.__save = fn;
}
save(){
this.__save && this.__save();
}
triggerSave(){
this.save();
}
createPage() {
// think!
// Create a new page on CoreSystem
// switch to it as active view
// Decide how page switching works
}
none(){
}
toggleMenu() {
this.Menu.toggle();
}
showMenu() {
this.Menu.show();
}
hideMenu() {
this.Menu.hide();
}
render(){
return (
this.toggleMenu()}
/>
this.triggerSave()}
title="Save"
color="#606060"
>Save
this.export()}
title="Export"
color="#606060"
>Export
Giorgos Markou
{this.Menu.render()}
)
}
}
const styles = StyleSheet.create({
container:{
flex:1,
paddingRight:8,
paddingLeft:8,
paddingTop: 8,
paddingBottom: 8,
flexDirection:'row',
justifyContent: 'space-between'
},
innerContainer: {
flexDirection: 'row',
paddingTop: 4,
paddingLeft: 0,
paddingRight: 0,
paddingBottom: 4
},
item: {
paddingLeft: 8,
paddingRight: 8,
fontFamily: 'thin'
},
menu: {
height:100,
width: 200,
backgroundColor: 'gray'
}
})