Skip to content

Commit dade404

Browse files
Remove jQuery from the citation modal (except fomantic) (#30008)
- Switched to plain JavaScript - Tested the citation modal functionality and it works as before # Demo using JavaScript without jQuery ![demo](https://github.com/go-gitea/gitea/assets/20454870/65bba1eb-dd4c-477f-8a2d-08e65f1e9f42) --------- Signed-off-by: Yarden Shoham <[email protected]> Co-authored-by: silverwind <[email protected]>
1 parent 5c91d79 commit dade404

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

web_src/js/features/citation.js

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import $ from 'jquery';
2+
import {getCurrentLocale} from '../utils.js';
23

34
const {pageData} = window.config;
45

5-
async function initInputCitationValue($citationCopyApa, $citationCopyBibtex) {
6+
async function initInputCitationValue(citationCopyApa, citationCopyBibtex) {
67
const [{Cite, plugins}] = await Promise.all([
78
import(/* webpackChunkName: "citation-js-core" */'@citation-js/core'),
89
import(/* webpackChunkName: "citation-js-formats" */'@citation-js/plugin-software-formats'),
@@ -14,56 +15,57 @@ async function initInputCitationValue($citationCopyApa, $citationCopyBibtex) {
1415
config.constants.fieldTypes.doi = ['field', 'literal'];
1516
config.constants.fieldTypes.version = ['field', 'literal'];
1617
const citationFormatter = new Cite(citationFileContent);
17-
const lang = document.documentElement.lang || 'en-US';
18+
const lang = getCurrentLocale() || 'en-US';
1819
const apaOutput = citationFormatter.format('bibliography', {template: 'apa', lang});
1920
const bibtexOutput = citationFormatter.format('bibtex', {lang});
20-
$citationCopyBibtex.attr('data-text', bibtexOutput);
21-
$citationCopyApa.attr('data-text', apaOutput);
21+
citationCopyBibtex.setAttribute('data-text', bibtexOutput);
22+
citationCopyApa.setAttribute('data-text', apaOutput);
2223
}
2324

2425
export async function initCitationFileCopyContent() {
2526
const defaultCitationFormat = 'apa'; // apa or bibtex
2627

2728
if (!pageData.citationFileContent) return;
2829

29-
const $citationCopyApa = $('#citation-copy-apa');
30-
const $citationCopyBibtex = $('#citation-copy-bibtex');
31-
const $inputContent = $('#citation-copy-content');
30+
const citationCopyApa = document.getElementById('citation-copy-apa');
31+
const citationCopyBibtex = document.getElementById('citation-copy-bibtex');
32+
const inputContent = document.getElementById('citation-copy-content');
33+
34+
if ((!citationCopyApa && !citationCopyBibtex) || !inputContent) return;
3235

33-
if ((!$citationCopyApa.length && !$citationCopyBibtex.length) || !$inputContent.length) return;
3436
const updateUi = () => {
3537
const isBibtex = (localStorage.getItem('citation-copy-format') || defaultCitationFormat) === 'bibtex';
36-
const copyContent = (isBibtex ? $citationCopyBibtex : $citationCopyApa).attr('data-text');
37-
38-
$inputContent.val(copyContent);
39-
$citationCopyBibtex.toggleClass('primary', isBibtex);
40-
$citationCopyApa.toggleClass('primary', !isBibtex);
38+
const copyContent = (isBibtex ? citationCopyBibtex : citationCopyApa).getAttribute('data-text');
39+
inputContent.value = copyContent;
40+
citationCopyBibtex.classList.toggle('primary', isBibtex);
41+
citationCopyApa.classList.toggle('primary', !isBibtex);
4142
};
4243

43-
$('#cite-repo-button').on('click', async (e) => {
44+
document.getElementById('cite-repo-button')?.addEventListener('click', async (e) => {
4445
const dropdownBtn = e.target.closest('.ui.dropdown.button');
4546
dropdownBtn.classList.add('is-loading');
4647

4748
try {
4849
try {
49-
await initInputCitationValue($citationCopyApa, $citationCopyBibtex);
50+
await initInputCitationValue(citationCopyApa, citationCopyBibtex);
5051
} catch (e) {
5152
console.error(`initCitationFileCopyContent error: ${e}`, e);
5253
return;
5354
}
5455
updateUi();
5556

56-
$citationCopyApa.on('click', () => {
57+
citationCopyApa.addEventListener('click', () => {
5758
localStorage.setItem('citation-copy-format', 'apa');
5859
updateUi();
5960
});
60-
$citationCopyBibtex.on('click', () => {
61+
62+
citationCopyBibtex.addEventListener('click', () => {
6163
localStorage.setItem('citation-copy-format', 'bibtex');
6264
updateUi();
6365
});
6466

65-
$inputContent.on('click', () => {
66-
$inputContent.trigger('select');
67+
inputContent.addEventListener('click', () => {
68+
inputContent.select();
6769
});
6870
} finally {
6971
dropdownBtn.classList.remove('is-loading');

0 commit comments

Comments
 (0)