Skip to content

Commit ada3efd

Browse files
authored
Add context menu
2 parents 6cb2e5f + c2c60cc commit ada3efd

File tree

13 files changed

+699
-168
lines changed

13 files changed

+699
-168
lines changed

codedrop.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,15 +213,15 @@ body.addEventListener('dragleave', (ev) => {
213213
if ('launchQueue' in window) {
214214

215215
window.launchQueue.setConsumer(async (launchParams) => {
216-
217-
console.log('Launched with: ', launchParams);
218-
216+
219217
if (!launchParams.files.length) {
220218
return;
221219
}
222220

223221
const launchFile = launchParams.files[0];
224222

223+
console.log('[launchQueue] Launched with: ', launchFile);
224+
225225

226226
// if logged into git
227227
if (gitToken) {

context-menu.js

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
2+
// fix browser object parsing
3+
let contextMenu = {
4+
el: document.querySelector('.context-menu')
5+
};
6+
7+
contextMenu = {
8+
9+
el: document.querySelector('.context-menu'),
10+
11+
options: {
12+
push: contextMenu.el.querySelector('.push'),
13+
rename: contextMenu.el.querySelector('.rename'),
14+
share: contextMenu.el.querySelector('.share'),
15+
addToNewFolder: contextMenu.el.querySelector('.add-to-new-folder'),
16+
discardChanges: contextMenu.el.querySelector('.discard-changes'),
17+
deleteItem: contextMenu.el.querySelector('.delete')
18+
},
19+
20+
activeEl: null,
21+
22+
addOptionListeners: () => {
23+
24+
const options = contextMenu.options;
25+
26+
options.push.addEventListener('click', async () => {
27+
28+
const dialogResp = await checkPushDialogs();
29+
30+
if (dialogResp === 'return') return;
31+
32+
pushFileWithCommitMessageHTML(contextMenu.activeEl);
33+
34+
});
35+
36+
options.share.addEventListener('click', async () => {
37+
38+
const activeFileName = contextMenu.activeEl.querySelector('.name').textContent
39+
.replaceAll('\n','');
40+
41+
const link = createLink({
42+
dir: treeLoc,
43+
file: { name: activeFileName }
44+
});
45+
46+
copy(link).then(() => {
47+
showMessage('Copied link!');
48+
});
49+
50+
});
51+
52+
options.discardChanges.addEventListener('click', () => {
53+
54+
deleteModFileInHTML(contextMenu.activeEl);
55+
56+
});
57+
58+
},
59+
60+
addFileListener: (file) => {
61+
62+
if (!isMobile) {
63+
64+
file.addEventListener('contextmenu', async (e) => {
65+
66+
contextMenu.activeEl = file;
67+
file.classList.add('active');
68+
69+
onNextFrame(() => {
70+
moveElToMouse(contextMenu.el, e, 13);
71+
});
72+
73+
contextMenu.el.classList.add('visible', 'animating');
74+
75+
contextMenu.el.classList.toggle('modified', file.classList.contains('modified'));
76+
77+
window.setTimeout(() => {
78+
79+
contextMenu.el.classList.remove('animating');
80+
81+
}, 180);
82+
83+
});
84+
85+
}
86+
87+
}
88+
89+
}
90+
91+
contextMenu.addOptionListeners();
92+
93+
94+
sidebar.addEventListener('scroll', () => {
95+
96+
if (contextMenu.el.classList.contains('visible')) {
97+
98+
contextMenu.el.classList.remove('visible');
99+
contextMenu.activeEl.classList.remove('active');
100+
101+
}
102+
103+
});
104+
105+
document.addEventListener('mousedown', (e) => {
106+
107+
if (contextMenu.el.classList.contains('visible')) {
108+
109+
if (e.target.parentElement !== contextMenu.el &&
110+
e.target.parentElement.parentElement !== contextMenu.el) {
111+
112+
contextMenu.el.classList.remove('visible');
113+
contextMenu.activeEl.classList.remove('active');
114+
115+
}
116+
117+
}
118+
119+
});
120+
121+
contextMenu.el.addEventListener('click', () => {
122+
123+
contextMenu.el.classList.remove('visible');
124+
contextMenu.activeEl.classList.remove('active');
125+
126+
});
127+
128+
129+
130+
// disable context menu
131+
if (!isMobile) {
132+
133+
window.addEventListener('contextmenu', (e) => {
134+
135+
e.preventDefault();
136+
137+
});
138+
139+
}
140+

0 commit comments

Comments
 (0)