Vue

by ChangJoo Park

HTML

<div id="app">
  <aside>
    <ul>
      <li v-if="isNewList">
        <input type="text" v-model.trim="newListName">
        <button @click="onSave()">O</button>
        <button @click="onCancel()">X</button>
      </li>
      <li v-else @click="isNewList=true">New List</li>
      <li>Menu One</li>
    </ul>
  </aside>
  <main>
    <h1>Hello World</h1>
  </main>
</div>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#app {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
  display: flex;
}

#app aside {
  flex: 1;
  border-right: 1px solid black;
}

#app main {
  flex: 3;
}

Vue

new Vue({
  el: "#app",
  data: function () {
  	return {
    	isNewList: false,
    	newListName: '',
      list: []
		}
  },
  methods: {
  	doneNewListForm () {
    	this.isNewList = false
      this.newListName = ''
    },
  	onSave () {
    	if (this.newListName === '') {
      	return
			}
    	this.list(this.newListName)
      this.doneNewListForm()
    },
    onCancel: () => { this.doneNewListForm() }
	}
})