2
0
mirror of https://github.com/tenrok/vue-select.git synced 2026-06-07 07:12:23 +03:00

docs: autogenerate events, props

This commit is contained in:
Jeff
2019-11-21 13:00:50 -08:00
parent 17d360cbaf
commit ad14fa3014
20 changed files with 432 additions and 238 deletions
@@ -0,0 +1,50 @@
h2 {
margin-top: -3.1rem;
padding-top: 4.6rem;
display: flex;
align-items: center;
}
h2 small {
margin-left: .5rem;
}
h2 .header-anchor {
margin-top: 0;
float: none;
padding-right: 0;
margin-right: .25em;
}
h2 div {
display: flex;
align-items: center;
}
h2 > a {
display: flex;
}
h2 code {
display: inline-flex;
font-size: 1rem;
line-height: 1;
border-radius: 3px;
padding: .25rem;
margin-right: 1rem;
margin-left: .5rem;
}
ul {
list-style: none;
padding: 0;
margin: 0;
}
.search-box {
width: 100%;
}
.search-box [type=search] {
width: 100%;
}
@@ -0,0 +1,89 @@
<template>
<div>
<h1>Vue Select Events</h1>
<div class="search-box">
<input id="props-search" type="search" v-model="query" placeholder="Search for events...">
</div>
<ul>
<li v-for="event in filtered">
<h2 :id="event.name">
<a :href="`#${event.name}`" aria-hidden="true" class="header-anchor">#</a>
{{ event.name }}
<template v-if="event.since && event.since.hasOwnProperty('version')">
<a :href="event.since.link">
<Badge :text="`+${event.since.version}`" />
</a>
</template>
</h2>
<div v-html="markdown(event.description)"></div>
<ul v-if="event.see">
<li v-for="see in event.see"><a :href="see">{{ see }}</a></li>
</ul>
<pre><code v-html="event.rendered"></code></pre>
<Content :slot-key="event.name"></Content>
</li>
</ul>
</div>
</template>
<script>
import documentation from '@dynamic/api'
import formatTag from '../utils/formatTag';
import getSince from '../utils/getSince';
import getSee from '../utils/getSee';
import markdown from '../utils/markdown';
import highlight from '../utils/highlight';
export default {
name: "ApiEvents",
data () {
return {
query: ''
}
},
methods: {
highlight,
markdown,
getRenderedEvent (event) {
let rendered = '';
event.tags = event.tags || [];
event.properties = event.properties || [];
if (event.tags.length) {
rendered += '/* \n';
event.tags.forEach(tag => rendered += ` * ${formatTag(tag)} \n`);
rendered += ' */ \n';
}
rendered += `$emit('${event.name}'`;
if (event.properties.length) {
rendered += ', ';
rendered += event.properties.map(({name}) => name).join(', ');
}
rendered += ');';
return this.highlight(rendered);
},
},
computed: {
filtered () {
return this.events.filter(
event => this.query.length ? event.name.includes(this.query) : true);
},
events () {
return documentation.events.map(event => ({
...event,
rendered: this.getRenderedEvent(event),
since: getSince(event.tags || []),
see: getSee(event.tags || []),
})).sort((a, b) => a.name > b.name);
},
},
}
</script>
<style scoped src="../assets/listing.css"></style>
@@ -9,14 +9,14 @@
<ul>
<li v-for="prop in filtered">
<h2 :id="prop.name">
<a :href="`#${prop.name}`" aria-hidden="true" class="header-anchor">#</a>
{{ prop.name }}
<small><code>{{ prop.type }}</code></small>
<div>
<a :href="`#${prop.name}`" aria-hidden="true" class="header-anchor">#</a>
{{ prop.name }} <code>{{ prop.type }}</code>
</div>
<template v-if="prop.since.hasOwnProperty('version')">
<a :href="prop.since.link">
<Badge :text="`+${prop.since.version}`" />
<Badge :text="`+${prop.since.version}`" vertical="middle" />
</a>
</template>
</h2>
@@ -37,48 +37,20 @@
<script>
import documentation from '@dynamic/api'
import { highlight, languages } from 'prismjs';
import Markdown from 'markdown-it';
const md = new Markdown();
import getSee from '../utils/getSee';
import getSince from '../utils/getSince';
import markdown from '../utils/markdown';
import formatTag from '../utils/formatTag';
import highlight from '../utils/highlight';
export default {
name: "ApiDocs",
name: "ApiProps",
methods: {
markdown: snippet => md.render(snippet),
highlight: snippet => highlight(snippet, languages.javascript, 'javascript'),
/**
* @param tag
* @return {Object}
*/
formatTag (tag, type) {
let rendered = `@${tag.title}`;
if (tag.hasOwnProperty('type')) {
rendered += ' {' + tag.type.name + '}'
}
if (tag.hasOwnProperty('name')) {
rendered += ` ${tag.name} `
}
if (tag.hasOwnProperty('description')) {
rendered += ` ${tag.description}`
}
return rendered;
},
getSince (tags) {
const since = {};
if (tags.hasOwnProperty('since')) {
since.version = tags.since[0].description;
since.link = `https://github.com/sagalbot/vue-select/releases/tag/v${tags.since[0].description}`
}
return since;
},
getSee (tags) {
const since = [];
if (tags.hasOwnProperty('see')) {
tags.see.forEach(({description}) => since.push(description));
}
return since;
},
markdown,
highlight,
formatTag,
getSince,
getSee,
getParams (tags) {
const params = [];
if (tags.hasOwnProperty('params')) {
@@ -142,7 +114,7 @@ export default {
see,
params,
type,
defaultRendered
defaultRendered,
}
}).sort((a, b) => a.name > b.name);
},
@@ -150,24 +122,4 @@ export default {
}
</script>
<style scoped>
h2 {
margin-top: -3.1rem;
padding-top: 4.6rem;
margin-bottom: 0;
}
ul {
list-style: none;
padding: 0;
margin: 0;
}
.search-box {
width: 100%;
}
.search-box [type=search] {
width: 100%;
}
</style>
<style scoped src="../assets/listing.css"></style>
+5 -21
View File
@@ -1,24 +1,8 @@
import docs from '@dynamic/api.js';
// import docs from '@dynamic/api.js';
import ApiProps from './components/ApiProps';
import ApiEvents from './components/ApiEvents';
export default ({Vue, options, router, siteData}) => {
['props', 'events', 'slots', 'methods'].map(section => {
const page = siteData.pages.find(({path}) => path.includes(section));
if( ! page.hasOwnProperty('title') ) {
page.title = section.charAt(0).toUpperCase() + section.slice(1)
}
if (page && docs[section]) {
if( ! page.hasOwnProperty('headers') ) {
page.headers = [];
}
docs[section].forEach(({name}) => page.headers.push({
level: 2,
slug: name,
title: name,
}));
}
});
Vue.component('api-props', ApiProps);
Vue.component('api-events', ApiEvents);
}
@@ -0,0 +1,39 @@
const generator = require('./generator');
module.exports = async function (page) {
const section = ['props', 'events', 'slots', 'methods'].find(
section => page.frontmatter['api'] === section,
);
if (section) {
const docs = await generator(process.cwd());
if (typeof docs[section] === 'undefined') {
return;
}
if (typeof page.title === 'undefined') {
page.title = section.charAt(0).toUpperCase() + section.slice(1);
}
if (!page.hasOwnProperty('headers')) {
page.headers = [];
}
const headers = docs[section].map(({name}) => ({
level: 2,
slug: name,
title: name,
})).sort((a, b) => {
if (a.title < b.title) {
return -1;
}
if (a.title > b.title) {
return 1;
}
return 0;
});
page.headers.push(...headers);
}
};
+12 -13
View File
@@ -1,18 +1,7 @@
const path = require('path');
const fs = require('fs');
const chalk = require('chalk');
const generator = require('./generator');
/**
* Get all of the component mixin paths.
* @param directory
* @return {string[]}
*/
function getMixins (directory) {
return fs.readdirSync(directory)
.filter(file => file !== 'index.js')
.map(file => path.resolve(directory, file));
}
const extendPageData = require('./extendPageData');
/**
* @param options
@@ -20,10 +9,12 @@ function getMixins (directory) {
* @return {{clientDynamicModules(): Promise<{name: string, content: string}>}}
*/
module.exports = (options, {sourceDir}) => ({
name: 'vuepress-docgen',
/**
* Dynamically generates all API documentation with vue-docgen-api.
* Resulting object can be imported and used client-side via:
* The resulting object can be imported and used client-side via:
*
* import documentation from '@dynamic/api'
*
* @see https://vuepress.vuejs.org/plugin/option-api.html#clientdynamicmodules
@@ -43,4 +34,12 @@ module.exports = (options, {sourceDir}) => ({
*/
enhanceAppFiles: path.resolve(__dirname, 'enhanceApp.js'),
/**
* This function is responsible for adding documentation headers
* to the `headers Array` of each API page. These headers are
* then picked up by the search API, and displayed in the sidebar.
*
* @see https://vuepress.vuejs.org/plugin/option-api.html#extendpagedata
*/
extendPageData,
});
@@ -0,0 +1,24 @@
/**
* @param tag
* @return {String}
*/
export default function (tag) {
let rendered = `@${tag.title}`;
if (tag.hasOwnProperty('type')) {
if (tag.type.name === 'union') {
rendered += ` {${tag.type.elements.map(({name}) => name).join('|')}}`;
} else {
rendered += ' {' + tag.type.name + '}';
}
}
if (tag.hasOwnProperty('name')) {
rendered += ` ${tag.name}`;
}
if (tag.hasOwnProperty('description')) {
rendered += ` ${tag.description}`;
}
return rendered;
};
@@ -0,0 +1,11 @@
/**
* @param {Array} tags
* @return {[]}
*/
export default function (tags) {
const since = [];
if (tags.hasOwnProperty('see')) {
tags.see.forEach(({description}) => since.push(description));
}
return since;
};
@@ -0,0 +1,13 @@
/**
* @param {Array} tags
* @return {Object|false}
*/
export default function (tags) {
if (tags.hasOwnProperty('since')) {
const since = {};
since.version = tags.since[0].description;
since.link = `https://github.com/sagalbot/vue-select/releases/tag/v${tags.since[0].description}`;
return since;
}
return false;
}
@@ -0,0 +1,8 @@
import { highlight, languages } from 'prismjs';
/**
* Returns code block with prism markup.
* @param {String} snippet
* @return {*}
*/
export default snippet => highlight(snippet, languages.javascript, 'javascript')
@@ -0,0 +1,8 @@
import Markdown from 'markdown-it';
const md = new Markdown();
/**
* @param {String} text
* @return {*}
*/
export default text => md.render(text);
@@ -0,0 +1,12 @@
/**
* Get all of the component mixin paths.
* @param directory
* @return {string[]}
*/
function getMixins (directory) {
return fs.readdirSync(directory)
.filter(file => file !== 'index.js')
.map(file => path.resolve(directory, file));
}
module.exports = getMixins;
+5 -37
View File
@@ -1,39 +1,7 @@
## `input`
---
title: API/Events
api: events
---
Triggered when the selected value changes. Used internally for `v-model`.
<api-events />
```js
/**
* @param val {Object|String}` - selected option.
*/
this.$emit("input", val);
```
## `option:created`
Triggered when `taggable` is `true` and a new option has been created.
```js
/**
* @param newOption {Object} - created option
*/
this.$emit("option:created", newOption);
```
## `search:blur`
Triggered when the text input loses focus. The dropdown will close immediately before this
event is triggered.
```js
this.$emit("search:blur");
```
## `search:focus`
Triggered when the text input gains focus. The dropdown will open immediately before this
event is triggered.
```js
this.$emit("search:focus");
```
+5
View File
@@ -0,0 +1,5 @@
---
api: methods
---
<ApiMethods />
+5 -1
View File
@@ -1 +1,5 @@
<ApiDocs type="props" />
---
api: props
---
<api-props type="props" />
+4
View File
@@ -1,3 +1,7 @@
# Upgrading 2.x to 3.x
---
## `index` prop replaced with `reduce`
- v2.x provided the `index` `{String}` prop to return a single key from a selected object
+7 -7
View File
@@ -10,12 +10,12 @@
},
"devDependencies": {
"@babel/types": "^7.7.2",
"@vuepress/plugin-active-header-links": "^1.0.0-alpha.47",
"@vuepress/plugin-google-analytics": "^1.0.0-alpha.47",
"@vuepress/plugin-nprogress": "^1.0.0-alpha.47",
"@vuepress/plugin-pwa": "^1.0.0-alpha.47",
"@vuepress/plugin-register-components": "^1.0.0-alpha.47",
"@vuepress/plugin-search": "^1.0.0-alpha.47",
"@vuepress/plugin-active-header-links": "^1.2.0",
"@vuepress/plugin-google-analytics": "^1.2.0",
"@vuepress/plugin-nprogress": "^1.2.0",
"@vuepress/plugin-pwa": "^1.2.0",
"@vuepress/plugin-register-components": "^1.2.0",
"@vuepress/plugin-search": "^1.2.0",
"ast-types": "^0.13.2",
"chalk": "^3.0.0",
"cross-env": "^5.2.0",
@@ -27,7 +27,7 @@
"sass-loader": "^7.1.0",
"vue": "^2.6.10",
"vue-docgen-api": "^4.0.4",
"vuepress": "^1.0.0-alpha.47",
"vuepress": "^1.2.0",
"vuex": "^3.1.0"
}
}
+106 -92
View File
@@ -873,18 +873,18 @@
source-map "~0.6.1"
vue-template-es2015-compiler "^1.9.0"
"@vuepress/core@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.0.3.tgz#a32aedca770ee763c406a74abab2bc4fa42e9bdc"
integrity sha512-VUzjf2LMxy+DjiDs2QUO0R4zXATn0db7ClDETzc5D+HH08J2YwUO2YNHgIObHMyuihmDozesbYBiDp0kIxAqCw==
"@vuepress/core@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.2.0.tgz#8e0c636b7f8676202fdd1ecfbe31bfe245dab2a8"
integrity sha512-ZIsUkQIF+h4Yk6q4okoRnRwRhcYePu/kNiL0WWPDGycjai8cFqFjLDP/tJjfTKXmn9A62j2ETjSwaiMxCtDkyw==
dependencies:
"@babel/core" "^7.0.0"
"@vue/babel-preset-app" "^3.1.1"
"@vuepress/markdown" "^1.0.3"
"@vuepress/markdown-loader" "^1.0.3"
"@vuepress/plugin-last-updated" "^1.0.3"
"@vuepress/plugin-register-components" "^1.0.3"
"@vuepress/shared-utils" "^1.0.3"
"@vuepress/markdown" "^1.2.0"
"@vuepress/markdown-loader" "^1.2.0"
"@vuepress/plugin-last-updated" "^1.2.0"
"@vuepress/plugin-register-components" "^1.2.0"
"@vuepress/shared-utils" "^1.2.0"
autoprefixer "^9.5.1"
babel-loader "^8.0.4"
cache-loader "^3.0.0"
@@ -894,7 +894,7 @@
cross-spawn "^6.0.5"
css-loader "^2.1.1"
file-loader "^3.0.1"
js-yaml "^3.11.0"
js-yaml "^3.13.1"
lru-cache "^5.1.1"
mini-css-extract-plugin "0.6.0"
optimize-css-assets-webpack-plugin "^5.0.1"
@@ -903,34 +903,34 @@
postcss-safe-parser "^4.0.1"
toml "^3.0.0"
url-loader "^1.0.1"
vue "^2.5.16"
vue-loader "^15.2.4"
vue-router "^3.0.2"
vue-server-renderer "^2.5.16"
vue-template-compiler "^2.5.16"
vue "^2.6.10"
vue-loader "^15.7.1"
vue-router "^3.1.3"
vue-server-renderer "^2.6.10"
vue-template-compiler "^2.6.10"
vuepress-html-webpack-plugin "^3.2.0"
vuepress-plugin-container "^2.0.0"
vuepress-plugin-container "^2.0.2"
webpack "^4.8.1"
webpack-chain "^4.6.0"
webpack-dev-server "^3.5.1"
webpack-merge "^4.1.2"
webpackbar "3.2.0"
"@vuepress/markdown-loader@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.0.3.tgz#8e63e66d0bb1ec75ee564424bdf8e7ee38077b63"
integrity sha512-2/023ghXi+7XHeHRbcXpUeWAERtSSCopPPdZqFV5/aIhW+Lv1Bl2iV1QfR2jKwlnZO/6g3HYMBq2GJaTNw0QLg==
"@vuepress/markdown-loader@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.2.0.tgz#f8972014616b4ab46a99c9aaac2dd414d437411c"
integrity sha512-gOZzoHjfp/W6t+qKBRdbHS/9TwRnNuhY7V+yFzxofNONFHQULofIN/arG+ptYc2SuqJ541jqudNQW+ldHNMC2w==
dependencies:
"@vuepress/markdown" "^1.0.3"
"@vuepress/markdown" "^1.2.0"
loader-utils "^1.1.0"
lru-cache "^5.1.1"
"@vuepress/markdown@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.0.3.tgz#633e2b69ee7c00a1aaa8b71584a50e4e1518edc6"
integrity sha512-kauU0EZk5+Ju74MtxiBiQ6HAbcchr8UjbURHSHwJe1k6W0fy0wyQ0ND5EILLhKZl1KhZeHGGDKBW385ruRKfcQ==
"@vuepress/markdown@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.2.0.tgz#7c457e0fab52ef8ac4dd1898ae450bc3aec30746"
integrity sha512-RLRQmTu5wJbCO4Qv+J0K53o5Ew7nAGItLwWyzCbIUB6pRsya3kqSCViWQVlKlS53zFTmRHuAC9tJMRdzly3mCA==
dependencies:
"@vuepress/shared-utils" "^1.0.3"
"@vuepress/shared-utils" "^1.2.0"
markdown-it "^8.4.1"
markdown-it-anchor "^5.0.2"
markdown-it-chain "^1.3.0"
@@ -938,57 +938,57 @@
markdown-it-table-of-contents "^0.4.0"
prismjs "^1.13.0"
"@vuepress/plugin-active-header-links@^1.0.0-alpha.47", "@vuepress/plugin-active-header-links@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.0.3.tgz#94cae9a4e554fb7989461741748938efaa2fd65e"
integrity sha512-hUxGVfiQs/ywDykklSzMXT4evHe1w/DB5PMtS2LIig3sj5K+gAgNiu6L9SjXFTrYPxp9fWkYmkKPf7guV2QuRw==
"@vuepress/plugin-active-header-links@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.2.0.tgz#46495c89e51a95e57139be007dffbcae4b229260"
integrity sha512-vdi7l96pElJvEmcx6t9DWJNH25TIurS8acjN3+b7o4NzdaszFn5j6klN6WtI4Z+5BVDrxHP5W1F3Ebw8SZyupA==
dependencies:
lodash.throttle "^4.1.1"
lodash.debounce "^4.0.8"
"@vuepress/plugin-google-analytics@^1.0.0-alpha.47":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-google-analytics/-/plugin-google-analytics-1.0.3.tgz#2c36584d473d6d21b0880719afc83bd5b40e778b"
integrity sha512-mqFFQSJjQp5zscZJ0Ik+YDLV7sZSAO8w13CG8c5WsUCjy+0oWhqAw/NjpVrEK8Y/PdYPe4l/OE5jMUU5AqRRjg==
"@vuepress/plugin-google-analytics@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-google-analytics/-/plugin-google-analytics-1.2.0.tgz#54555fd14f01a032c5acff04ecbbe0911577d7d0"
integrity sha512-0zol5D4Efb5GKel7ADO/s65MLtKSLnOEGkeWzuipkWomSQPzP7TJ3+/RcYBnGdyBFHd1BSpTUHGK0b/IGwM3UA==
"@vuepress/plugin-last-updated@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.0.3.tgz#b9e3cd2d7cc27d0e70e7ea2194c171607bd61493"
integrity sha512-GMD9g8Lw1ASdBiRZgQotkZqOgsGuvX33sDnmRuYjUcO4f6Lo+m8JZsOTStNjcquCvykucbjYqU1LQTyGAMyZWw==
"@vuepress/plugin-last-updated@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.2.0.tgz#7b34065b793848b0482a222b7a6f1b7df3668cdc"
integrity sha512-j4uZb/MXDyG+v9QCG3T/rkiaOhC/ib7NKCt1cjn3GOwvWTDmB5UZm9EBhUpbDNrBgxW+SaHOe3kMVNO8bGOTGw==
dependencies:
cross-spawn "^6.0.5"
"@vuepress/plugin-nprogress@^1.0.0-alpha.47", "@vuepress/plugin-nprogress@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.0.3.tgz#a0d6913193c933171b4695bf153efb0c29a76421"
integrity sha512-F7+R9EcBV0MT7dn06sUhGpsE7dzkT/eVLBNDqN3hDBedhu1XV8Ch5JYYGXKGFHrRdtDmiwyvEl4W6L6uzCVT4Q==
"@vuepress/plugin-nprogress@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.2.0.tgz#ff6166946a0b118a39a562acb57983529afce4d2"
integrity sha512-0apt3Dp6XVCOkLViX6seKSEJgARihi+pX3/r8j8ndFp9Y+vmgLFZnQnGE5iKNi1ty+A6PZOK0RQcBjwTAU4pAw==
dependencies:
nprogress "^0.2.0"
"@vuepress/plugin-pwa@^1.0.0-alpha.47":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-pwa/-/plugin-pwa-1.0.3.tgz#4cf668fcf49a5875bbee2307695277d5adea78d3"
integrity sha512-kPvjo74/XqEivTd2QtS0SWD386GHpyuBCg1Km1HdaajIez8gvpQYG6AiLGNFlvFBc+hwEB2GHQkxSR2QvnPVUQ==
"@vuepress/plugin-pwa@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-pwa/-/plugin-pwa-1.2.0.tgz#d9bc1d74bcf4d57535d15d7fab2fead7c1d3fb3b"
integrity sha512-2WKm0sV8unoM1Ck+k3PEyWS+OyjjpM/z0HoPol3Pqb1t2TcgSD7mzVwuoFaK2Z5g2BrqT9wBLm9r8UpKI5Zfzg==
dependencies:
"@vuepress/shared-utils" "^1.0.3"
"@vuepress/shared-utils" "^1.2.0"
register-service-worker "^1.5.2"
workbox-build "^4.3.1"
"@vuepress/plugin-register-components@^1.0.0-alpha.47", "@vuepress/plugin-register-components@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.0.3.tgz#5cbfd0947c904a0f4c1911746fb5586520ed9b9d"
integrity sha512-6vlXEuaEJtV1EIudcVzJciJf0HRAcWRd6ViB9WO87enkqeT+bR32VZENqcN43RyF8vPP+mmZ/2eDUpvM3J6a2w==
"@vuepress/plugin-register-components@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.2.0.tgz#95aa0e0af94b2758b26ab98814c43b0f7bcd502b"
integrity sha512-C32b8sbGtDEX8I3SUUKS/w2rThiRFiKxmzNcJD996me7VY/4rgmZ8CxGtb6G9wByVoK0UdG1SOkrgOPdSCm80A==
dependencies:
"@vuepress/shared-utils" "^1.0.3"
"@vuepress/shared-utils" "^1.2.0"
"@vuepress/plugin-search@^1.0.0-alpha.47", "@vuepress/plugin-search@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.0.3.tgz#f8cd98380cc00db067fb243e4fd298c6b8b7179a"
integrity sha512-CD4G6BrKtS6JS9DzPMbwwovanaKMhj/KN6Bv7P5oY5inWTl3lE9KOjzr1YUkoA6wL6f69EfdB5B7cdO2d47n/w==
"@vuepress/plugin-search@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.2.0.tgz#0b27c467b7fd42bd4d9e32de0fe2fb81a24bd311"
integrity sha512-QU3JfnMfImDAArbJOVH1q1iCDE5QrT99GLpNGo6KQYZWqY1TWAbgyf8C2hQdaI03co1lkU2Wn/iqzHJ5WHlueg==
"@vuepress/shared-utils@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.0.3.tgz#224d2fc10fcf26d871eae8dd93b810616731123f"
integrity sha512-E9kh+nk+E0X6GTONXK1OWeY7Yyl/bUkWltmdh89f7hcSn2MxuBmlph4JdtZKrTK2m+9EqzpVR+CYanGjTA/ZQA==
"@vuepress/shared-utils@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.2.0.tgz#8d9ab40c24f75f027ef32c2ad0169f0f08e949fa"
integrity sha512-wo5Ng2/xzsmIYCzvWxgLFlDBp7FkmJp2shAkbSurLNAh1vixhs0+LyDxsk01+m34ktJSp9rTUUsm6khw/Fvo0w==
dependencies:
chalk "^2.3.2"
diacritics "^1.3.0"
@@ -1000,18 +1000,20 @@
semver "^6.0.0"
upath "^1.1.0"
"@vuepress/theme-default@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.0.3.tgz#a92025d9be1705ef7b95c53365a8ba3d917b6023"
integrity sha512-rS12CdMQwpSD7RI9XCM1gko13uPKhbVlbaxb7bd6ozjOQm4Iy1qAAyoZredRl1Sx29QvvcXZxLMGzAqx98GMCw==
"@vuepress/theme-default@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.2.0.tgz#3303af21a00031a3482ed1c494508234f545cbf1"
integrity sha512-mJxAMYQQv4OrGFsArMlONu8RpCzPUVx81dumkyTT4ay5PXAWTj+WDeFQLOT3j0g9QrDJGnHhbiw2aS+R/0WUyQ==
dependencies:
"@vuepress/plugin-active-header-links" "^1.0.3"
"@vuepress/plugin-nprogress" "^1.0.3"
"@vuepress/plugin-search" "^1.0.3"
"@vuepress/plugin-active-header-links" "^1.2.0"
"@vuepress/plugin-nprogress" "^1.2.0"
"@vuepress/plugin-search" "^1.2.0"
docsearch.js "^2.5.2"
lodash "^4.17.15"
stylus "^0.54.5"
stylus-loader "^3.0.2"
vuepress-plugin-container "^2.0.0"
vuepress-plugin-container "^2.0.2"
vuepress-plugin-smooth-scroll "^0.0.3"
"@webassemblyjs/ast@1.8.5":
version "1.8.5"
@@ -4742,6 +4744,11 @@ lodash.clonedeep@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
lodash.kebabcase@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
@@ -4767,11 +4774,6 @@ lodash.templatesettings@^4.0.0:
dependencies:
lodash._reinterpolate "^3.0.0"
lodash.throttle@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
@@ -7118,6 +7120,11 @@ slash@^2.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
smoothscroll-polyfill@^0.4.3:
version "0.4.4"
resolved "https://registry.yarnpkg.com/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz#3a259131dc6930e6ca80003e1cb03b603b69abf8"
integrity sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==
snapdragon-node@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@@ -8083,10 +8090,10 @@ vue-hot-reload-api@^2.3.0:
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf"
integrity sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==
vue-loader@^15.2.4:
version "15.7.1"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.7.1.tgz#6ccacd4122aa80f69baaac08ff295a62e3aefcfd"
integrity sha512-fwIKtA23Pl/rqfYP5TSGK7gkEuLhoTvRYW+TU7ER3q9GpNLt/PjG5NLv3XHRDiTg7OPM1JcckBgds+VnAc+HbA==
vue-loader@^15.7.1:
version "15.7.2"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.7.2.tgz#cc89e2716df87f70fe656c9da9d7f8bec06c73d6"
integrity sha512-H/P9xt/nkocyu4hZKg5TzPqyCT1oKOaCSk9zs0JCbJuy0Q8KtR0bjJpnT/5R5x/Ckd1GFkkLQnQ1C4x6xXeLZg==
dependencies:
"@vue/component-compiler-utils" "^3.0.0"
hash-sum "^1.0.2"
@@ -8094,12 +8101,12 @@ vue-loader@^15.2.4:
vue-hot-reload-api "^2.3.0"
vue-style-loader "^4.1.0"
vue-router@^3.0.2:
vue-router@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.1.3.tgz#e6b14fabc0c0ee9fda0e2cbbda74b350e28e412b"
integrity sha512-8iSa4mGNXBjyuSZFCCO4fiKfvzqk+mhL0lnKuGcQtO1eoj8nq3CmbEG8FwK5QqoqwDgsjsf1GDuisDX4cdb/aQ==
vue-server-renderer@^2.5.16:
vue-server-renderer@^2.6.10:
version "2.6.10"
resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.6.10.tgz#cb2558842ead360ae2ec1f3719b75564a805b375"
integrity sha512-UYoCEutBpKzL2fKCwx8zlRtRtwxbPZXKTqbl2iIF4yRZUNO/ovrHyDAJDljft0kd+K0tZhN53XRHkgvCZoIhug==
@@ -8121,7 +8128,7 @@ vue-style-loader@^4.1.0:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
vue-template-compiler@^2.0.0, vue-template-compiler@^2.5.16:
vue-template-compiler@^2.0.0, vue-template-compiler@^2.6.10:
version "2.6.10"
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc"
integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==
@@ -8134,7 +8141,7 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
vue@^2.5.16, vue@^2.6.10:
vue@^2.6.10:
version "2.6.10"
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637"
integrity sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==
@@ -8152,20 +8159,27 @@ vuepress-html-webpack-plugin@^3.2.0:
toposort "^1.0.0"
util.promisify "1.0.0"
vuepress-plugin-container@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/vuepress-plugin-container/-/vuepress-plugin-container-2.0.2.tgz#3489cc732c7a210b31f202556e1346125dffeb73"
integrity sha512-SrGYYT7lkie7xlIlAVhn+9sDW42MytNCoxWL/2uDr+q9wZA4h1uYlQvfc2DVjy+FsM9PPPSslkeo/zCpYVY82g==
vuepress-plugin-container@^2.0.2:
version "2.1.1"
resolved "https://registry.yarnpkg.com/vuepress-plugin-container/-/vuepress-plugin-container-2.1.1.tgz#1938f28c8244aa82fee60aa4741596129d1df01f"
integrity sha512-1hKZZ9DzVvgNZiSZfiTGiAzbq9bYww64kFz5yv3BRLKdEYX7rSIxKW6lFrbyaTCPQkT1qWgr95sM+GVetpcQFw==
dependencies:
markdown-it-container "^2.0.0"
vuepress@^1.0.0-alpha.47:
version "1.0.3"
resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.0.3.tgz#7c744061b5a3244ab86d49ac8d66417258509f13"
integrity sha512-+wCbyhZjaboY6VGBceai+JCdho96ZO9hVFHLnGGsj1/Zt2sKHrwWwV7lvbBO9y/IGib0YYpifpEJcpzvy3MDVg==
vuepress-plugin-smooth-scroll@^0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/vuepress-plugin-smooth-scroll/-/vuepress-plugin-smooth-scroll-0.0.3.tgz#6eff2d4c186cca917cc9f7df2b0af7de7c8c6438"
integrity sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg==
dependencies:
"@vuepress/core" "^1.0.3"
"@vuepress/theme-default" "^1.0.3"
smoothscroll-polyfill "^0.4.3"
vuepress@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.2.0.tgz#2f2cdf337ad40a3e4866dfd33e97b840db386af7"
integrity sha512-EfHo8Cc73qo+1Pm18hM0qOGynmDr8q5fu2664obynsdCJ1zpvoShVnA0Msraw4SI2xDc0iAoIb3dTwxUIM8DAw==
dependencies:
"@vuepress/core" "^1.2.0"
"@vuepress/theme-default" "^1.2.0"
cac "^6.3.9"
envinfo "^7.2.0"
opencollective-postinstall "^2.0.2"
+11 -1
View File
@@ -28,7 +28,17 @@ export default {
* @emits search
*/
search () {
this.$emit('search', this.search, this.toggleLoading);
const search = this.search;
const toggleLoading = this.toggleLoading;
/**
* Triggered anytime the search text has been altered in any way,
* including being set to an empty string. Your listener should
* account for empty search strings.
*
* @param {String} search - the current search text
* @param {Function} toggleLoading - accepts true/false to toggle loading state
*/
this.$emit('search', search, toggleLoading);
},
/**