Skip to content

Commit dec2493

Browse files
committed
feat: support placement option, resolve #125
1 parent 9fc7f9a commit dec2493

24 files changed

+133
-49
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
Changelog
22
---
3+
## 1.6.1
4+
* Added `placement` option to configure default location of hovercards.
5+
36
## 1.6.0
47
* Refactored options page for Firefox.
58
* Fixed `src`s of SVG images in readme.

demo/dist/demo.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

extensions/chrome/hovercard.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,6 +1205,7 @@ $(() => {
12051205
contentAsHTML: true,
12061206
debug: false,
12071207
delay: cardOptions.delay,
1208+
side: cardOptions.side || 'top',
12081209
// trigger: 'click',
12091210
zIndex: 2147483647,
12101211
functionBefore(self, event) {
@@ -1815,19 +1816,20 @@ $(() => {
18151816
delay: 200,
18161817
readme: true,
18171818
disableProjects: false,
1818-
showSelf: false
1819+
showSelf: false,
1820+
side: 'top'
18191821
};
18201822

18211823
let cardOptions = Object.assign({}, DEFAULT_OPTIONS);
18221824

18231825
if (platform && platform.storage) {
18241826
let storage = platform.storage.sync || platform.storage.local;
1825-
storage.get(Object.assign({}, DEFAULT_OPTIONS), ({ delay, readme, disableProjects, showSelf }) => {
1827+
storage.get(Object.assign({}, DEFAULT_OPTIONS), ({ delay, readme, disableProjects, showSelf, side }) => {
18261828
delay = parseInt(delay, 10)
18271829
delay = isNaN(delay) ? 200 : delay
18281830

18291831
Object.assign(cardOptions, {
1830-
delay, readme, disableProjects, showSelf
1832+
delay, readme, disableProjects, showSelf, side
18311833
});
18321834

18331835
extract();

extensions/chrome/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"manifest_version": 2,
33
"name": "GitHub Hovercard",
44
"description": "Neat hovercards for GitHub.",
5-
"version": "1.6.0",
5+
"version": "1.6.1",
66
"icons": {
77
"128": "icon.png"
88
},

extensions/chrome/options.html

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,20 @@ <h3>Delay</h3>
9595
<section>
9696
<p><input type="number" id="delay" placeholder="Time in milliseconds..."> ms <span class="aux">(<code>200</code> by default)</span></p>
9797
</section>
98+
<h3>Placement</h3>
99+
<section>
100+
<p>
101+
<label>
102+
Default placement of hovercards
103+
<select id="side">
104+
<option value="top">Top</option>
105+
<option value="right">Right</option>
106+
<option value="bottom">Bottom</option>
107+
<option value="left">Left</option>
108+
</select>
109+
</label>
110+
</p>
111+
</section>
98112
<h3>Optional Features</h3>
99113
<section>
100114
<p><label><input type="checkbox" id="show-self"> Show user hovercards for myself</label></p>

extensions/chrome/options.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ let delayInput = $('#delay');
1212
let readmeInput = $('#readme');
1313
let projectsInput = $('#projects');
1414
let showSelfInput = $('#show-self');
15+
let sideInput = $('#side');
1516
let current;
1617
let storage = chrome.storage.sync || chrome.storage.local;
1718

@@ -29,14 +30,16 @@ function restore() {
2930
delay: 200,
3031
readme: true,
3132
disableProjects: false,
32-
showSelf: false
33+
showSelf: false,
34+
side: 'top'
3335
}, item => {
3436
current = item.domains;
3537
list.append(Mustache.render(ITEM_TPL, { domains: current }));
3638
delayInput.val(item.delay);
3739
readmeInput.prop('checked', item.readme);
3840
projectsInput.prop('checked', item.disableProjects);
3941
showSelfInput.prop('checked', item.showSelf);
42+
sideInput.prop('value', item.side);
4043
});
4144
}
4245

@@ -45,6 +48,7 @@ function save() {
4548
let readme = readmeInput.prop('checked');
4649
let disableProjects = projectsInput.prop('checked');
4750
let showSelf = showSelfInput.prop('checked');
51+
let side = sideInput.prop('value');
4852

4953
let domains = [];
5054
$('.domain').each(function () {
@@ -60,12 +64,12 @@ function save() {
6064

6165
chrome.permissions.remove({
6266
origins: revoking
63-
}, removed => {
67+
}, () => {
6468
let granting = domains.map(toOrigins).reduce(concat, []);
6569
chrome.permissions.request({
6670
origins: granting
6771
}, granted => {
68-
let options = { delay, readme, disableProjects, showSelf };
72+
let options = { delay, readme, disableProjects, showSelf, side };
6973
if (granted) {
7074
Object.assign(options, { domains });
7175
current = domains;

extensions/edge/hovercard.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,6 +1205,7 @@ document.addEventListener('DOMContentLoaded', () => {
12051205
contentAsHTML: true,
12061206
debug: false,
12071207
delay: cardOptions.delay,
1208+
side: cardOptions.side || 'top',
12081209
// trigger: 'click',
12091210
zIndex: 2147483647,
12101211
functionBefore(self, event) {
@@ -1815,19 +1816,20 @@ document.addEventListener('DOMContentLoaded', () => {
18151816
delay: 200,
18161817
readme: true,
18171818
disableProjects: false,
1818-
showSelf: false
1819+
showSelf: false,
1820+
side: 'top'
18191821
};
18201822

18211823
let cardOptions = Object.assign({}, DEFAULT_OPTIONS);
18221824

18231825
if (platform && platform.storage) {
18241826
let storage = platform.storage.sync || platform.storage.local;
1825-
storage.get(Object.assign({}, DEFAULT_OPTIONS), ({ delay, readme, disableProjects, showSelf }) => {
1827+
storage.get(Object.assign({}, DEFAULT_OPTIONS), ({ delay, readme, disableProjects, showSelf, side }) => {
18261828
delay = parseInt(delay, 10)
18271829
delay = isNaN(delay) ? 200 : delay
18281830

18291831
Object.assign(cardOptions, {
1830-
delay, readme, disableProjects, showSelf
1832+
delay, readme, disableProjects, showSelf, side
18311833
});
18321834

18331835
extract();

extensions/edge/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"storage",
2626
"https://github.com/*"
2727
],
28-
"version": "1.6.0",
28+
"version": "1.6.1",
2929
"-ms-preload": {
3030
"backgroundScript": "backgroundScriptsAPIBridge.js",
3131
"contentScript": "contentScriptsAPIBridge.js"

extensions/edge/options.html

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,20 @@ <h3>Delay</h3>
9595
<section>
9696
<p><input type="number" id="delay" placeholder="Time in milliseconds..."> ms <span class="aux">(<code>200</code> by default)</span></p>
9797
</section>
98+
<h3>Placement</h3>
99+
<section>
100+
<p>
101+
<label>
102+
Default placement of hovercards
103+
<select id="side">
104+
<option value="top">Top</option>
105+
<option value="right">Right</option>
106+
<option value="bottom">Bottom</option>
107+
<option value="left">Left</option>
108+
</select>
109+
</label>
110+
</p>
111+
</section>
98112
<h3>Optional Features</h3>
99113
<section>
100114
<p><label><input type="checkbox" id="show-self"> Show user hovercards for myself</label></p>

extensions/edge/options.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ let delayInput = $('#delay');
1212
let readmeInput = $('#readme');
1313
let projectsInput = $('#projects');
1414
let showSelfInput = $('#show-self');
15+
let sideInput = $('#side');
1516
let current;
1617
let storage = browser.storage.sync || browser.storage.local;
1718

@@ -29,14 +30,16 @@ function restore() {
2930
delay: 200,
3031
readme: true,
3132
disableProjects: false,
32-
showSelf: false
33+
showSelf: false,
34+
side: 'top'
3335
}, item => {
3436
current = item.domains;
3537
list.append(Mustache.render(ITEM_TPL, { domains: current }));
3638
delayInput.val(item.delay);
3739
readmeInput.prop('checked', item.readme);
3840
projectsInput.prop('checked', item.disableProjects);
3941
showSelfInput.prop('checked', item.showSelf);
42+
sideInput.prop('value', item.side);
4043
});
4144
}
4245

@@ -45,6 +48,7 @@ function save() {
4548
let readme = readmeInput.prop('checked');
4649
let disableProjects = projectsInput.prop('checked');
4750
let showSelf = showSelfInput.prop('checked');
51+
let side = sideInput.prop('value');
4852

4953
let domains = [];
5054
$('.domain').each(function () {
@@ -54,7 +58,7 @@ function save() {
5458
}
5559
});
5660

57-
let options = { delay, readme, disableProjects, showSelf };
61+
let options = { delay, readme, disableProjects, showSelf, side };
5862
Object.assign(options, { domains });
5963
current = domains;
6064

0 commit comments

Comments
 (0)