Skip to content

Commit 63678cb

Browse files
authored
Merge pull request #155 from citation-file-format/116-keywords
Keywords screen
2 parents 5ca7e55 + 31cd03f commit 63678cb

3 files changed

Lines changed: 84 additions & 4 deletions

File tree

src/components/KeywordEditCard.vue

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<template>
2+
<div class="q-gutter-md row items-between no-wrap">
3+
<div class="col-11">
4+
<q-input
5+
bg-color="white"
6+
outlined
7+
dense
8+
v-bind:model-value="keyword"
9+
placeholder="Type a keyword"
10+
v-on:update:modelValue="
11+
$emit('update', $event)
12+
"
13+
/>
14+
</div><div class="col-1">
15+
<q-btn
16+
icon="delete"
17+
color="negative"
18+
title="Remove"
19+
dense
20+
v-on:click="$emit('removePressed')"
21+
/>
22+
</div>
23+
</div>
24+
</template>
25+
26+
<script lang="ts">
27+
import { defineComponent } from 'vue'
28+
29+
export default defineComponent({
30+
name: 'KeywordEditCard',
31+
props: {
32+
keyword: {
33+
type: String,
34+
default: ''
35+
}
36+
},
37+
emits: ['removePressed', 'update']
38+
})
39+
</script>

src/pages/Keywords.vue

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,68 @@
66
<p class="q-mt-xl page-title">
77
Keywords
88
</p>
9+
10+
<p class="question">
11+
What keywords describe the work?
12+
</p>
13+
14+
<div
15+
v-for="(keyword, index) in keywords"
16+
v-bind:key="index"
17+
>
18+
<KeywordEditCard
19+
v-bind:keyword="keyword"
20+
v-on:update="setKeyword(index, $event)"
21+
v-on:removePressed="removeKeyword(index)"
22+
/>
23+
</div>
24+
25+
<q-btn v-on:click="addKeyword">
26+
Add keyword
27+
</q-btn>
928
</div>
1029
</div>
1130
<StepperActions />
1231
</template>
1332

1433
<script lang="ts">
1534
import StepperActions from 'components/StepperActions.vue'
35+
import KeywordEditCard from 'components/KeywordEditCard.vue'
1636
import { defineComponent } from 'vue'
1737
import { useCff } from '../store/cff'
1838
1939
export default defineComponent({
2040
name: 'Keywords',
2141
components: {
22-
StepperActions
42+
StepperActions,
43+
KeywordEditCard
2344
},
2445
setup () {
2546
const { keywords, setKeywords } = useCff()
47+
48+
function addKeyword () {
49+
const newKeyword = ''
50+
const newKeywords = [...keywords.value, newKeyword]
51+
console.log(newKeywords)
52+
setKeywords(newKeywords)
53+
}
54+
55+
function removeKeyword (index: number) {
56+
const newKeywords = [...keywords.value]
57+
newKeywords.splice(index, 1)
58+
setKeywords(newKeywords)
59+
}
60+
61+
function setKeyword (index: number, newKeyword: string) {
62+
const newKeywords = [...keywords.value]
63+
newKeywords[index] = newKeyword
64+
setKeywords(newKeywords)
65+
}
2666
return {
2767
keywords,
28-
setKeywords
68+
addKeyword,
69+
removeKeyword,
70+
setKeyword
2971
}
3072
}
3173
})
@@ -41,5 +83,4 @@ export default defineComponent({
4183
max-width: 700px;
4284
min-width: 300px;
4385
}
44-
4586
</style>

src/types/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ export type CffType = {
2929
cffVersion?: string,
3030
commit?: string,
3131
dateReleased?: string,
32+
keywords: KeywordsType,
3233
identifiers: IdentifiersType,
33-
keywords?: KeywordsType,
3434
license?: string,
3535
message?: string,
3636
repository?: string,

0 commit comments

Comments
 (0)