Skip to content

Commit dd5273b

Browse files
committed
feat: setting option to disable custom context menus
1 parent 169a253 commit dd5273b

File tree

4 files changed

+38
-4
lines changed

4 files changed

+38
-4
lines changed

extension/js/content.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ SOFTWARE.
7171
}
7272
else {
7373
// legacy support
74-
if (!data[bucket].hasOwnProperty("themes") || !data[bucket].hasOwnProperty("colorScheme") || !data[bucket].hasOwnProperty("wordWrap") || !data[bucket].hasOwnProperty("sortingOrder") || !data[bucket].hasOwnProperty("rawUnicodeEscapes")) {
74+
if (!data[bucket].hasOwnProperty("themes") || !data[bucket].hasOwnProperty("colorScheme") || !data[bucket].hasOwnProperty("wordWrap") || !data[bucket].hasOwnProperty("sortingOrder") || !data[bucket].hasOwnProperty("rawUnicodeEscapes") || !data[bucket].hasOwnProperty("contextMenus")) {
7575
// still has old data format, update it to new format
7676
let newDataFormat = Object.assign({}, globalThis.sharedData.defaultOptions);
7777
if (data[bucket].themeMode == "auto") {
@@ -134,6 +134,7 @@ SOFTWARE.
134134
}
135135

136136
function setupContextMenu() {
137+
if(!options.contextMenus) return;
137138
window.addEventListener("contextmenu", function (e) {
138139
if (window.getComputedStyle(contextMenu).visibility === "visible") return false;
139140
e.preventDefault();

extension/js/globals.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const defaultOptions = {
1111
"colorScheme": "auto",
1212
"wordWrap": false,
1313
"rawUnicodeEscapes": false,
14+
"contextMenus": false,
1415
"sortingOrder": "unchanged",
1516
"hotkeys": {
1617
"parsed": "p",

extension/js/options.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ var tabEl,
55
wordWrapEl,
66
sortingOrderEl,
77
rawUnicodeEscapesEl,
8+
contextMenusEl,
89
options = {},
910
bucket = "JSON_FORMATTER_OPTIONS";
1011

@@ -16,7 +17,8 @@ window.addEventListener("load", async () => {
1617
darkThemeEl = document.getElementById("dark_theme");
1718
wordWrapEl = document.getElementById("word_wrap");
1819
sortingOrderEl = document.getElementById("sorting_order");
19-
rawUnicodeEscapesEl = document.getElementById("raw_unicode_escapes");
20+
rawUnicodeEscapesEl = document.getElementById("raw_unicode_escapes")
21+
contextMenusEl = document.getElementById("context_menus");
2022

2123
await fetchExtensionSettings();
2224
console.log(options);
@@ -46,6 +48,7 @@ window.addEventListener("load", async () => {
4648
wordWrapEl.value = options.wordWrap;
4749
sortingOrderEl.value = options.sortingOrder;
4850
rawUnicodeEscapesEl.value = options.rawUnicodeEscapes;
51+
contextMenusEl.value = options.contextMenus;
4952
}
5053
async function fetchExtensionSettings() {
5154
// Get Options
@@ -57,9 +60,10 @@ window.addEventListener("load", async () => {
5760
Object.assign(options, globalThis.sharedData.defaultOptions);
5861
}
5962
else {
60-
if (!data[bucket].hasOwnProperty("themes") || !data[bucket].hasOwnProperty("colorScheme") || !data[bucket].hasOwnProperty("wordWrap") || !data[bucket].hasOwnProperty("sortingOrder")) {
63+
if (!data[bucket].hasOwnProperty("themes") || !data[bucket].hasOwnProperty("colorScheme") || !data[bucket].hasOwnProperty("wordWrap") || !data[bucket].hasOwnProperty("sortingOrder") || !data[bucket].hasOwnProperty("rawUnicodeEscapes") || !data[bucket].hasOwnProperty("contextMenus")) {
6164
// still has old data format, update it to new format
6265
let newDataFormat = Object.assign({}, globalThis.sharedData.defaultOptions);
66+
console.log(newDataFormat);
6367
if (data[bucket].themeMode == "auto") {
6468
newDataFormat.colorScheme = "auto";
6569
}
@@ -71,8 +75,16 @@ window.addEventListener("load", async () => {
7175
newDataFormat.colorScheme = "light";
7276
}
7377
}
74-
newDataFormat.tab = data[bucket].defaultTab;
78+
if (data[bucket].defaultTab) {
79+
newDataFormat.tab = data[bucket].defaultTab;
80+
}
81+
82+
delete data[bucket].themeMode;
83+
delete data[bucket].currentTheme;
84+
delete data[bucket].defaultTab;
7585

86+
newDataFormat = { ...newDataFormat, ...data[bucket] };
87+
console.log(newDataFormat);
7688
Object.assign(options, newDataFormat);
7789
await chrome.storage.local.set({ [bucket]: newDataFormat });
7890
}
@@ -146,4 +158,10 @@ window.addEventListener("load", async () => {
146158
options.rawUnicodeEscapes = e.target.value == "true" ? true : false;
147159
await chrome.storage.local.set({ [bucket]: options });
148160
});
161+
162+
contextMenusEl.addEventListener("input", async (e) => {
163+
if (options.contextMenus == e.target.value) return;
164+
options.contextMenus = e.target.value == "true" ? true : false;
165+
await chrome.storage.local.set({ [bucket]: options });
166+
});
149167
});

extension/options.html

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,20 @@ <h2 id="header" class="title">Settings</h2>
154154
</select>
155155
</div>
156156
</div>
157+
158+
<!-- Context Menus -->
159+
<div class="item" title="Enable/Disable Right-Click Context Menus">
160+
<div class="item-inner">
161+
<div class="label">
162+
<span>Context Menus</span>
163+
</div>
164+
<select class="md-select" id="context_menus" aria-label="Enable/Disable Right-Click Context Menus"
165+
title="Enable/Disable Right-Click Context Menus">
166+
<option value="true">Enabled</option>
167+
<option value="false" selected>Disabled</option>
168+
</select>
169+
</div>
170+
</div>
157171
<div class="hr"></div>
158172
</div>
159173
</div>

0 commit comments

Comments
 (0)