From 986560d284c7381af1d38e3e0de81e62517c4db1 Mon Sep 17 00:00:00 2001 From: koehr Date: Wed, 18 Mar 2020 14:04:12 +0100 Subject: [PATCH] small refactoring and start to support list editing --- src/components/deck-card-bullet-list.vue | 31 ++++++++++++++++++++- src/components/deck-card.vue | 28 ++++++++++++------- src/directives.ts | 1 - src/lib.ts | 2 +- src/shims.d.ts | 34 ++++++++++++------------ src/views/Deck.vue | 8 +++--- 6 files changed, 70 insertions(+), 34 deletions(-) diff --git a/src/components/deck-card-bullet-list.vue b/src/components/deck-card-bullet-list.vue index c4a2506..cbb7157 100644 --- a/src/components/deck-card-bullet-list.vue +++ b/src/components/deck-card-bullet-list.vue @@ -1,6 +1,11 @@ @@ -10,6 +15,30 @@ import { Component, Prop, Vue } from 'vue-property-decorator' @Component export default class DeckCardBulletList extends Vue { @Prop() public readonly params!: string[] + @Prop() public readonly editable!: boolean + + private addEntry (index: number) { + const newParams = [...this.params] + newParams.splice(index + 1, 0, '') + this.$emit('replace', newParams) + } + + private removeEntry (index: number) { + const newParams = [...this.params] + newParams.splice(index, 1) + this.$emit('replace', newParams) + } + + private handleKey (index: number, event: KeyboardEvent) { + const { key, shiftKey } = event + if (key === 'Enter' && shiftKey) { + event.preventDefault() + this.addEntry(index) + } else if (key === 'Backspace') { + const text = (event.target as HTMLElement).innerText + if (text.trim() === '') this.removeEntry(index) + } + } } diff --git a/src/components/deck-card.vue b/src/components/deck-card.vue index 1a44fe8..0ceb424 100644 --- a/src/components/deck-card.vue +++ b/src/components/deck-card.vue @@ -15,12 +15,13 @@