aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package-lock.json154
-rw-r--r--package.json1
-rw-r--r--src/layouts/default.vue25
-rw-r--r--src/pages/UploadCreate.vue19
-rw-r--r--src/pages/UploadDetail.vue7
5 files changed, 192 insertions, 14 deletions
diff --git a/package-lock.json b/package-lock.json
index 39a9ce4..49d7f59 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -232,7 +232,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
"requires": {
"sprintf-js": "1.0.3"
}
@@ -5464,6 +5463,11 @@
"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
"dev": true
},
+ "highlight.js": {
+ "version": "9.12.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
+ "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4="
+ },
"hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -6457,6 +6461,14 @@
"resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz",
"integrity": "sha1-fYa9VmefWM5qhHBKZX3TkruoGnk="
},
+ "katex": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.6.0.tgz",
+ "integrity": "sha1-EkGOCRIcBckgQbazuftrqyE8tvM=",
+ "requires": {
+ "match-at": "0.1.1"
+ }
+ },
"killable": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz",
@@ -6516,6 +6528,14 @@
"type-check": "0.3.2"
}
},
+ "linkify-it": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz",
+ "integrity": "sha1-B3NSbDF8j9E71TTuHRgP+Iq/iBo=",
+ "requires": {
+ "uc.micro": "1.0.5"
+ }
+ },
"load-json-file": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
@@ -6797,6 +6817,92 @@
"object-visit": "1.0.1"
}
},
+ "markdown-it": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-6.1.1.tgz",
+ "integrity": "sha1-ztA39Ec+6fUVOsQU933IPJG6knw=",
+ "requires": {
+ "argparse": "1.0.10",
+ "entities": "1.1.1",
+ "linkify-it": "1.2.4",
+ "mdurl": "1.0.1",
+ "uc.micro": "1.0.5"
+ }
+ },
+ "markdown-it-abbr": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/markdown-it-abbr/-/markdown-it-abbr-1.0.4.tgz",
+ "integrity": "sha1-1mtTZFIcuz3Yqlna37ovtoZcj9g="
+ },
+ "markdown-it-deflist": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/markdown-it-deflist/-/markdown-it-deflist-2.0.3.tgz",
+ "integrity": "sha512-/BNZ8ksW42bflm1qQLnRI09oqU2847Z7MVavrR0MORyKLtiUYOMpwtlAfMSZAQU9UCvaUZMpgVAqoS3vpToJxw=="
+ },
+ "markdown-it-emoji": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz",
+ "integrity": "sha1-m+4OmpkKljupbfaYDE/dsF37Tcw="
+ },
+ "markdown-it-footnote": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-2.0.0.tgz",
+ "integrity": "sha1-FOnE9o/xLPNU+jZa43gnboEEypQ="
+ },
+ "markdown-it-ins": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-it-ins/-/markdown-it-ins-2.0.0.tgz",
+ "integrity": "sha1-papqMPHi9x6Ul1Z8/f9A8f3mdIM="
+ },
+ "markdown-it-katex": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/markdown-it-katex/-/markdown-it-katex-2.0.3.tgz",
+ "integrity": "sha1-17hqGuoLnWSW+rTnkZoY/e9YnDk=",
+ "requires": {
+ "katex": "0.6.0"
+ }
+ },
+ "markdown-it-mark": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-it-mark/-/markdown-it-mark-2.0.0.tgz",
+ "integrity": "sha1-RqGqlHEFrtgYiXjgoBYXnkBPQsc="
+ },
+ "markdown-it-sub": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz",
+ "integrity": "sha1-N1/WAm6ufdywEkl/ZBEZXqHjr+g="
+ },
+ "markdown-it-sup": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz",
+ "integrity": "sha1-y5yf+RpSVawI8/09YyhuFd8KH8M="
+ },
+ "markdown-it-task-lists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.0.tgz",
+ "integrity": "sha512-3mT1oQ/brZiV719l3iY/ZIEQLIn60Y9U840l4hh3sA1seHM+ZZjzE5Env1+V1bWqKE1BeVffiuE7qNALzh7r2Q=="
+ },
+ "markdown-it-toc-and-anchor": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/markdown-it-toc-and-anchor/-/markdown-it-toc-and-anchor-4.1.2.tgz",
+ "integrity": "sha1-snH2lKcL9xnmtygFbXvZMdNkIU0=",
+ "requires": {
+ "clone": "2.1.1",
+ "uslug": "1.0.4"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
+ "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs="
+ }
+ }
+ },
+ "match-at": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz",
+ "integrity": "sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q=="
+ },
"math-expression-evaluator": {
"version": "1.2.17",
"resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
@@ -6825,6 +6931,11 @@
}
}
},
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
+ },
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -9936,8 +10047,7 @@
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"ssri": {
"version": "5.2.4",
@@ -10535,6 +10645,11 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "uc.micro": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz",
+ "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg=="
+ },
"uglify-es": {
"version": "3.3.9",
"resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
@@ -10729,6 +10844,11 @@
"integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
"dev": true
},
+ "unorm": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz",
+ "integrity": "sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA="
+ },
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -10957,6 +11077,14 @@
}
}
},
+ "uslug": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/uslug/-/uslug-1.0.4.tgz",
+ "integrity": "sha1-uaIvCRTgqGFAYz2swwLl9PpFBnc=",
+ "requires": {
+ "unorm": "1.4.1"
+ }
+ },
"util": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
@@ -11099,6 +11227,26 @@
}
}
},
+ "vue-markdown": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/vue-markdown/-/vue-markdown-2.2.4.tgz",
+ "integrity": "sha512-hoTX/W1UIdHZrp/b0vpHSsJXAEfWsafaQLgtE2VX4gY8O/C3L2Gabqu95gyG429rL4ML1SwGv+xsPABX7yfFIQ==",
+ "requires": {
+ "highlight.js": "9.12.0",
+ "markdown-it": "6.1.1",
+ "markdown-it-abbr": "1.0.4",
+ "markdown-it-deflist": "2.0.3",
+ "markdown-it-emoji": "1.4.0",
+ "markdown-it-footnote": "2.0.0",
+ "markdown-it-ins": "2.0.0",
+ "markdown-it-katex": "2.0.3",
+ "markdown-it-mark": "2.0.0",
+ "markdown-it-sub": "1.0.0",
+ "markdown-it-sup": "1.0.0",
+ "markdown-it-task-lists": "2.1.0",
+ "markdown-it-toc-and-anchor": "4.1.2"
+ }
+ },
"vue-moment": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/vue-moment/-/vue-moment-3.2.0.tgz",
diff --git a/package.json b/package.json
index 665a9d8..5e4cab4 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"moment": "^2.21.0",
"quasar-extras": "^1.0.2",
"vue-i18n": "^7.3.3",
+ "vue-markdown": "^2.2.4",
"vue-moment": "^3.2.0",
"vue-truncate-collapsed": "^1.3.0",
"vue2-dropzone": "^3.0.5"
diff --git a/src/layouts/default.vue b/src/layouts/default.vue
index 36c2635..84db2c1 100644
--- a/src/layouts/default.vue
+++ b/src/layouts/default.vue
@@ -71,4 +71,29 @@
</script>
<style>
+ .indent {
+ margin-left: 1rem;
+ }
+
+ .markdown h1 {
+ font-size: 1.1rem;
+ font-style: italic;
+ font-weight: bold;
+ }
+
+ .markdown h2 {
+ font-size: 1.1rem;
+ font-style: italic;
+ font-weight: 500;
+ }
+
+ .markdown h3 {
+ font-size: 1.1rem;
+ font-style: italic;
+ }
+
+ .markdown h4, .markdown h5, .markdown h6 {
+ font-size: 1.0rem;
+ font-style: italic;
+ }
</style>
diff --git a/src/pages/UploadCreate.vue b/src/pages/UploadCreate.vue
index 26e7703..1c2506a 100644
--- a/src/pages/UploadCreate.vue
+++ b/src/pages/UploadCreate.vue
@@ -14,20 +14,22 @@
icon="fa-pencil">
<q-input v-model="title" float-label="Title" />
</q-field>
- <q-field :error="errors.description !== undefined"
- :error-label="errors.description"
- icon="fa-bars">
- <q-input v-model="description" type="textarea" float-label="Description" />
- </q-field>
<q-field :error="errors.tags !== undefined"
:error-label="errors.tags"
icon="fa-tags">
<q-chips-input v-model="tags" float-label="Tags"></q-chips-input>
</q-field>
+ <q-field :error="errors.description !== undefined"
+ :error-label="errors.description"
+ icon="fa-bars">
+ <q-input v-model="description" type="textarea" float-label="Description (Markdown possible)" />
+ </q-field>
</div>
<q-stepper-navigation>
<q-btn color="primary" :disabled="!description || !title" @click="$refs.stepper.next()">Next</q-btn>
</q-stepper-navigation>
+ <h5>Description Preview</h5>
+ <vue-markdown class="markdown indent" :html="false" :source="description"></vue-markdown>
</q-step>
<q-step name="pic" title="Add image">
<p>You can upload an image, e.g. a screenshot, that will be used as a preview for your mod</p>
@@ -128,6 +130,7 @@
<script>
import Dropzone from 'vue2-dropzone'
import 'vue2-dropzone/dist/vue2Dropzone.css'
+ import VueMarkdown from 'vue-markdown'
import {
LocalStorage,
@@ -136,6 +139,7 @@
export default {
components: {
Dropzone,
+ VueMarkdown,
},
data () {
return {
@@ -264,8 +268,3 @@
},
}
</script>
-
-<style lang="styl" type="text/stylus" scoped>
- .indent
- margin: 1rem 3rem 2rem 3rem
-</style>
diff --git a/src/pages/UploadDetail.vue b/src/pages/UploadDetail.vue
index d85e3cc..223ad35 100644
--- a/src/pages/UploadDetail.vue
+++ b/src/pages/UploadDetail.vue
@@ -35,8 +35,11 @@
</q-card-actions>
<q-card-main>
<p class="text-faded">
- {{ upload.description }}
+ <vue-markdown class="markdown" :html="false" :source="upload.description"></vue-markdown>
</p>
+ </q-card-main>
+ <q-card-title>Tags</q-card-title>
+ <q-card-main>
<div class="group">
<q-chip v-for="tag of upload.tags" :key="tag">{{ tag }}</q-chip>
</div>
@@ -180,11 +183,13 @@
import UploadVoter from 'components/UploadVoter'
import CommentVoter from 'components/CommentVoter'
import FileSaver from 'file-saver'
+ import VueMarkdown from 'vue-markdown'
export default {
components: {
CommentVoter,
UploadVoter,
+ VueMarkdown,
},
computed: {
routeId () {