Skip to content

Commit bae7367

Browse files
lucasfernogrstoenescu
authored andcommitted
[v1 docs] app extension discover section (quasarframework#3720)
* initial commit * remove console.log * error handling
1 parent 5e93d25 commit bae7367

File tree

6 files changed

+176
-34
lines changed

6 files changed

+176
-34
lines changed

docs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
},
1313
"dependencies": {
1414
"@quasar/extras": "^1.0.0",
15+
"axios": "^0.18.0",
1516
"docsearch.js": "^2.6.2",
1617
"prismjs": "^1.15.0",
1718
"quasar": "^1.0.0-beta.4",

docs/src/assets/menu.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,10 @@ const appExtensions = [
851851
{
852852
name: 'Introduction',
853853
path: 'introduction'
854+
},
855+
{
856+
name: 'Discover',
857+
path: 'discover'
854858
}
855859
]
856860

docs/src/boot/components.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import DocInstallation from 'components/DocInstallation.vue'
77
import DocLink from 'components/DocLink.vue'
88
import DocPage from 'components/DocPage.vue'
99

10+
import AppExtensionDiscover from 'components/AppExtensionDiscover.vue'
11+
1012
// leave the export, even if you don't use it
1113
export default async ({ Vue }) => {
1214
Vue.component('DocExample', DocExample)
@@ -16,4 +18,6 @@ export default async ({ Vue }) => {
1618

1719
Vue.component('DocLink', DocLink)
1820
Vue.component('DocPage', DocPage)
21+
22+
Vue.component('AppExtensionDiscover', AppExtensionDiscover)
1923
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
<template>
2+
<div class="q-pa-md">
3+
<q-table
4+
title="App Extensions"
5+
:data="data"
6+
:columns="columns"
7+
row-key="__index"
8+
:pagination.sync="pagination"
9+
:loading="loading"
10+
:filter="filter"
11+
@request="onRequest"
12+
>
13+
<template v-slot:body="props">
14+
<q-tr :props="props" @click.native="onPackageClick(props.row)" class="cursor-pointer">
15+
<q-td key="package" :props="props">
16+
{{ props.row.package.name }}
17+
<q-badge color="primary">{{ props.row.package.version }}</q-badge>
18+
<q-badge v-for="(flag, value) in props.row.flags" :key="flag" color="secondary" class="q-ml-xs">
19+
{{ value || flag }}
20+
</q-badge>
21+
</q-td>
22+
<q-td key="author" :props="props">{{ props.row.package.author.name }}</q-td>
23+
<q-tooltip>
24+
{{ props.row.package.description }}
25+
</q-tooltip>
26+
</q-tr>
27+
</template>
28+
<template v-slot:top-right>
29+
<q-input borderless dense debounce="300" v-model="filter" placeholder="Search">
30+
<template v-slot:append>
31+
<q-icon name="search"/>
32+
</template>
33+
</q-input>
34+
</template>
35+
</q-table>
36+
</div>
37+
</template>
38+
39+
<script>
40+
import axios from 'axios'
41+
import { openURL } from 'quasar'
42+
43+
export default {
44+
data () {
45+
return {
46+
filter: null,
47+
loading: false,
48+
data: [],
49+
pagination: {
50+
descending: false,
51+
page: 1,
52+
rowsPerPage: 25,
53+
rowsNumber: null
54+
},
55+
columns: [
56+
{
57+
name: 'package',
58+
label: 'Package',
59+
align: 'left'
60+
},
61+
{
62+
name: 'author',
63+
label: 'Author',
64+
align: 'left'
65+
}
66+
]
67+
}
68+
},
69+
methods: {
70+
onPackageClick (data) {
71+
openURL(data.package.links.homepage || data.package.links.repository || data.package.links.npm)
72+
},
73+
74+
onRequest (props) {
75+
let {
76+
page,
77+
rowsPerPage,
78+
sortBy,
79+
descending
80+
} = props.pagination
81+
let filter = props.filter
82+
83+
this.loading = true
84+
85+
// don't forget to update local pagination object
86+
this.pagination.page = page
87+
this.pagination.rowsPerPage = rowsPerPage
88+
this.pagination.sortBy = sortBy
89+
this.pagination.descending = descending
90+
91+
// fetch data from server
92+
this.query(filter)
93+
.then(response => {
94+
// clear out existing data and add new
95+
this.data.splice(0, this.data.length, ...response.data.results)
96+
this.pagination.rowsNumber = response.data.total
97+
98+
// ...and turn of loading indicator
99+
this.loading = false
100+
})
101+
.catch(() => {
102+
this.$q.notify('Error looking for packages')
103+
this.loading = false
104+
})
105+
},
106+
107+
query (filter) {
108+
return axios
109+
.get('https://api.npms.io/v2/search', {
110+
params: {
111+
q: 'quasar app extension ' + filter,
112+
from: (this.pagination.page - 1) * this.pagination.rowsPerPage,
113+
size: this.pagination.rowsPerPage
114+
}
115+
})
116+
}
117+
}
118+
}
119+
</script>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
title: Discover App Extensions
3+
---
4+
5+
Here you can search for app extensions you can add to your project.
6+
7+
<app-extension-discover />

docs/yarn.lock

Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,6 +1369,14 @@ aws4@^1.8.0:
13691369
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
13701370
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
13711371

1372+
axios@^0.18.0:
1373+
version "0.18.0"
1374+
resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102"
1375+
integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=
1376+
dependencies:
1377+
follow-redirects "^1.3.0"
1378+
is-buffer "^1.1.5"
1379+
13721380
babel-eslint@^10.0.1:
13731381
version "10.0.1"
13741382
resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed"
@@ -1509,9 +1517,9 @@ big.js@^5.2.2:
15091517
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
15101518

15111519
binary-extensions@^1.0.0:
1512-
version "1.13.0"
1513-
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.0.tgz#9523e001306a32444b907423f1de2164222f6ab1"
1514-
integrity sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==
1520+
version "1.13.1"
1521+
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
1522+
integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
15151523

15161524
bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.3:
15171525
version "3.5.3"
@@ -1785,9 +1793,9 @@ caniuse-api@^3.0.0:
17851793
lodash.uniq "^4.5.0"
17861794

17871795
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000947, caniuse-lite@^1.0.30000951:
1788-
version "1.0.30000951"
1789-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000951.tgz#c7c2fd4d71080284c8677dd410368df8d83688fe"
1790-
integrity sha512-eRhP+nQ6YUkIcNQ6hnvdhMkdc7n3zadog0KXNRxAZTT2kHjUb1yGn71OrPhSn8MOvlX97g5CR97kGVj8fMsXWg==
1796+
version "1.0.30000954"
1797+
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000954.tgz#227c2743e40f07c71e6683b6ca9491bfd5755b8e"
1798+
integrity sha512-Wopmc0eVSSG1d9/O4JTn0OmGhUfhEHNkHhoCjUrGSImvHI+2YQWkOI1RRNTUFNSHbSAD8J41jbdZrPP4r32cbQ==
17911799

17921800
caseless@~0.12.0:
17931801
version "0.12.0"
@@ -2228,14 +2236,13 @@ cosmiconfig@^4.0.0:
22282236
require-from-string "^2.0.1"
22292237

22302238
cosmiconfig@^5.0.0:
2231-
version "5.1.0"
2232-
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.1.0.tgz#6c5c35e97f37f985061cdf653f114784231185cf"
2233-
integrity sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q==
2239+
version "5.2.0"
2240+
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.0.tgz#45038e4d28a7fe787203aede9c25bca4a08b12c8"
2241+
integrity sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==
22342242
dependencies:
22352243
import-fresh "^2.0.0"
22362244
is-directory "^0.3.1"
2237-
js-yaml "^3.9.0"
2238-
lodash.get "^4.4.2"
2245+
js-yaml "^3.13.0"
22392246
parse-json "^4.0.0"
22402247

22412248
create-ecdh@^4.0.0:
@@ -3454,7 +3461,7 @@ flush-write-stream@^1.0.0:
34543461
inherits "^2.0.3"
34553462
readable-stream "^2.3.6"
34563463

3457-
follow-redirects@^1.0.0:
3464+
follow-redirects@^1.0.0, follow-redirects@^1.3.0:
34583465
version "1.7.0"
34593466
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76"
34603467
integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==
@@ -3842,9 +3849,9 @@ hmac-drbg@^1.0.0:
38423849
minimalistic-crypto-utils "^1.0.1"
38433850

38443851
hoek@6.x.x:
3845-
version "6.1.2"
3846-
resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.2.tgz#99e6d070561839de74ee427b61aa476bd6bddfd6"
3847-
integrity sha512-6qhh/wahGYZHFSFw12tBbJw5fsAhhwrrG/y3Cs0YMTv2WzMnL0oLPnQJjv1QJvEfylRSOFuP+xCu+tdx0tD16Q==
3852+
version "6.1.3"
3853+
resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.3.tgz#73b7d33952e01fe27a38b0457294b79dd8da242c"
3854+
integrity sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==
38483855

38493856
hogan.js@^3.0.2:
38503857
version "3.0.2"
@@ -4012,9 +4019,9 @@ icss-utils@^4.1.0:
40124019
postcss "^7.0.14"
40134020

40144021
ieee754@^1.1.4:
4015-
version "1.1.12"
4016-
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
4017-
integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==
4022+
version "1.1.13"
4023+
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
4024+
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
40184025

40194026
iferr@^0.1.5:
40204027
version "0.1.5"
@@ -4527,7 +4534,7 @@ js-stringify@^1.0.1:
45274534
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
45284535
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
45294536

4530-
js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.9.0:
4537+
js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.9.0:
45314538
version "3.13.0"
45324539
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.0.tgz#38ee7178ac0eea2c97ff6d96fff4b18c7d8cf98e"
45334540
integrity sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==
@@ -4788,11 +4795,6 @@ lodash.findkey@^4.6.0:
47884795
resolved "https://registry.yarnpkg.com/lodash.findkey/-/lodash.findkey-4.6.0.tgz#83058e903b51cbb759d09ccf546dea3ea39c4718"
47894796
integrity sha1-gwWOkDtRy7dZ0JzPVG3qPqOcRxg=
47904797

4791-
lodash.get@^4.4.2:
4792-
version "4.4.2"
4793-
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
4794-
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
4795-
47964798
lodash.kebabcase@^4.1.1:
47974799
version "4.1.1"
47984800
resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
@@ -5189,9 +5191,9 @@ mute-stream@0.0.7:
51895191
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
51905192

51915193
nan@^2.9.2:
5192-
version "2.13.1"
5193-
resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.1.tgz#a15bee3790bde247e8f38f1d446edcdaeb05f2dd"
5194-
integrity sha512-I6YB/YEuDeUZMmhscXKxGgZlFnhsn5y0hgOZBadkzfTRrZBtJDZeg6eQf7PYMIEclwmorTKK8GztsyOUSVBREA==
5194+
version "2.13.2"
5195+
resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7"
5196+
integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==
51955197

51965198
nanomatch@^1.2.9:
51975199
version "1.2.13"
@@ -6233,9 +6235,9 @@ pretty-error@^2.0.2:
62336235
utila "~0.4"
62346236

62356237
prismjs@^1.15.0:
6236-
version "1.15.0"
6237-
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.15.0.tgz#8801d332e472091ba8def94976c8877ad60398d9"
6238-
integrity sha512-Lf2JrFYx8FanHrjoV5oL8YHCclLQgbJcVZR+gikGGMqz6ub5QVWDTM6YIwm3BuPxM/LOV+rKns3LssXNLIf+DA==
6238+
version "1.16.0"
6239+
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.16.0.tgz#406eb2c8aacb0f5f0f1167930cb83835d10a4308"
6240+
integrity sha512-OA4MKxjFZHSvZcisLGe14THYsug/nF6O1f0pAJc0KN0wTyAcLqmsbE+lTGKSpyh+9pEW57+k6pg2AfYR+coyHA==
62396241
optionalDependencies:
62406242
clipboard "^2.0.0"
62416243

@@ -6926,7 +6928,12 @@ selfsigned@^1.9.1:
69266928
dependencies:
69276929
node-forge "0.7.5"
69286930

6929-
"semver@2 || 3 || 4 || 5", semver@5.6.0, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
6931+
"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
6932+
version "5.7.0"
6933+
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
6934+
integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
6935+
6936+
semver@5.6.0:
69306937
version "5.6.0"
69316938
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
69326939
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
@@ -8397,9 +8404,9 @@ write@1.0.3:
83978404
mkdirp "^0.5.1"
83988405

83998406
ws@^6.0.0:
8400-
version "6.2.0"
8401-
resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.0.tgz#13806d9913b2a5f3cbb9ba47b563c002cbc7c526"
8402-
integrity sha512-deZYUNlt2O4buFCa3t5bKLf8A7FPP/TVjwOeVNpw818Ma5nk4MLXls2eoEGS39o8119QIYxTrTDoPQ5B/gTD6w==
8407+
version "6.2.1"
8408+
resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
8409+
integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
84038410
dependencies:
84048411
async-limiter "~1.0.0"
84058412

0 commit comments

Comments
 (0)