Skip to content

Commit 8b0f407

Browse files
committed
Update: add doc links to sidebar
1 parent 88e1a75 commit 8b0f407

File tree

3 files changed

+62
-38
lines changed

3 files changed

+62
-38
lines changed

src/eslint.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,17 @@ const ruleCategories = (() => {
5858
})()
5959

6060
export { ruleCategories, linter }
61+
62+
/**
63+
* Get the document URL of a rule.
64+
* @param {string} ruleId The rule ID to get.
65+
* @returns {string|null} The document URL of the rule.
66+
*/
67+
export function getRuleUrl(ruleId) {
68+
if (ruleId == null) {
69+
return null
70+
}
71+
return ruleId.startsWith("vue/")
72+
? `https://github.com/vuejs/eslint-plugin-vue/tree/master/docs/rules/${ruleId.replace("vue/", "")}.md`
73+
: `https://eslint.org/docs/rules/${ruleId}`
74+
}

src/message-list.vue

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
<script>
2323
import MdIcon from "./md-icon.vue"
24+
import { getRuleUrl } from "./eslint.js"
2425
2526
export default {
2627
name: "MessageList",
@@ -42,14 +43,7 @@ export default {
4243
return "\u2007".repeat(Math.max(1, 8 - width))
4344
},
4445
45-
url(ruleId) {
46-
if (ruleId == null) {
47-
return ""
48-
}
49-
return ruleId.startsWith("vue/")
50-
? `https://github.com/vuejs/eslint-plugin-vue/tree/master/docs/rules/${ruleId.replace("vue/", "")}.md`
51-
: `https://eslint.org/docs/rules/${ruleId}`
52-
},
46+
url: getRuleUrl,
5347
},
5448
}
5549
</script>

src/rule-select-category.vue

Lines changed: 46 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,50 @@
11
<template>
22
<li class="rule-select-category__root">
33
<label class="rule-select-category__header">
4-
<input
5-
type="checkbox"
6-
v-model="shown"
7-
style="display:none"
8-
>
4+
<input type="checkbox" v-model="shown" style="display:none">
95
<md-icon :kind="shown ? 'expand_more' : 'chevron_right'"/>
106
{{ category.name }}
117
<span class="rule-select-category__count">
128
({{ countChecked }} / {{ countAll }})
139
</span>
1410
</label>
15-
<ul
16-
class="rule-select-category__rules"
17-
v-if="shown"
18-
>
11+
<ul v-if="shown" class="rule-select-category__rules">
1912
<li>
2013
<label class="rule-select-category__rule">
21-
<input
22-
type="checkbox"
23-
v-model="allRules"
24-
:true-value="2"
25-
:false-value="0"
26-
@change="emitChangeEvent"
27-
>
28-
(all rules)
14+
<div class="rule-select-category__rule-checkbox">
15+
<input
16+
type="checkbox"
17+
v-model="allRules"
18+
:true-value="2"
19+
:false-value="0"
20+
@change="emitChangeEvent"
21+
>
22+
</div>
23+
<div class="rule-select-category__rule-name">
24+
(all rules)
25+
</div>
2926
</label>
3027
</li>
31-
<li
32-
v-for="rule of category.rules"
28+
<li v-for="rule of category.rules"
3329
:key="rule.name"
3430
:title="rule.description"
3531
>
3632
<label class="rule-select-category__rule">
37-
<input
38-
type="checkbox"
39-
v-model="config.rules[rule.name]"
40-
:true-value="2"
41-
:false-value="0"
42-
@change="emitChangeEvent"
43-
>
44-
{{ stripPrefix(rule.name) }}
33+
<div class="rule-select-category__rule-checkbox">
34+
<input
35+
type="checkbox"
36+
v-model="config.rules[rule.name]"
37+
:true-value="2"
38+
:false-value="0"
39+
@change="emitChangeEvent"
40+
>
41+
</div>
42+
<div class="rule-select-category__rule-name">
43+
{{ stripPrefix(rule.name) }}
44+
</div>
45+
<a class="rule-select-category__rule-link" :href="url(rule.name)" target="_blank">
46+
<md-icon kind="launch" title="Open document"/>
47+
</a>
4548
</label>
4649
</li>
4750
</ul>
@@ -50,6 +53,7 @@
5053

5154
<script>
5255
import MdIcon from "./md-icon.vue"
56+
import { getRuleUrl } from "./eslint.js"
5357
5458
export default {
5559
name: "RuleSelectCategory",
@@ -105,6 +109,8 @@ export default {
105109
emitChangeEvent() {
106110
this.$emit("change")
107111
},
112+
113+
url: getRuleUrl,
108114
},
109115
}
110116
</script>
@@ -136,7 +142,8 @@ export default {
136142
}
137143
138144
.rule-select-category__rule {
139-
display: block;
145+
display: flex;
146+
align-items: center;
140147
padding: 4px;
141148
padding-left: 16px;
142149
border-bottom: 1px solid #E8F5E9;
@@ -145,8 +152,17 @@ li:last-child > .rule-select-category__rule {
145152
border-bottom: 1px solid #4CAF50;
146153
}
147154
148-
.rule-select-category__rule > input[type=checkbox] {
149-
vertical-align: middle;
155+
.rule-select-category__rule-checkbox {
156+
flex-shrink: 0;
157+
padding-top: 4px; /* align to the rule name */
158+
padding-right: 4px;
159+
}
160+
.rule-select-category__rule-name {
161+
flex-grow: 1;
162+
}
163+
.rule-select-category__rule-link {
164+
display: block;
165+
flex-shrink: 0;
150166
}
151167
152168
.rule-select-category__header:hover,

0 commit comments

Comments
 (0)