]> source.dussan.org Git - gitea.git/commitdiff
Remove jQuery import from some files (#32512)
authorwxiaoguang <wxiaoguang@gmail.com>
Thu, 14 Nov 2024 18:48:41 +0000 (02:48 +0800)
committerGitHub <noreply@github.com>
Thu, 14 Nov 2024 18:48:41 +0000 (02:48 +0800)
Many files do not directly depend on jQuery now.

To clarify the usage: use `fomanticQuery` to operate Fomantic
components.

Then developers could focus on removing the remaining jQuery usages by
searching `import $` globally.

21 files now:

```
./components/RepoBranchTagSelector.vue:3:import $ from 'jquery';
./features/admin/common.ts:1:import $ from 'jquery';
./features/admin/emails.ts:1:import $ from 'jquery';
./features/common-button.ts:1:import $ from 'jquery';
./features/comp/ComboMarkdownEditor.ts:3:import $ from 'jquery'; (I am working on it, there will be a new PR)
./features/comp/LabelEdit.ts:1:import $ from 'jquery';
./features/notification.ts:1:import $ from 'jquery';
./features/org-team.ts:1:import $ from 'jquery';
./features/repo-code.ts:1:import $ from 'jquery';
./features/repo-common.ts:1:import $ from 'jquery';
./features/repo-diff.ts:1:import $ from 'jquery';
./features/repo-editor.ts:1:import $ from 'jquery';
./features/repo-issue-content.ts:1:import $ from 'jquery';
./features/repo-issue-list.ts:1:import $ from 'jquery';
./features/repo-issue-sidebar.ts:1:import $ from 'jquery';
./features/repo-issue.ts:1:import $ from 'jquery';
./features/repo-legacy.ts:1:import $ from 'jquery';
./features/repo-new.ts:1:import $ from 'jquery';
./features/repo-projects.ts:1:import $ from 'jquery';
./features/repo-settings.ts:1:import $ from 'jquery';
./features/repo-template.ts:1:import $ from 'jquery';
```

web_src/js/components/DashboardRepoList.vue
web_src/js/components/RepoContributors.vue
web_src/js/features/citation.ts
web_src/js/features/common-form.ts
web_src/js/features/comp/ConfirmModal.ts
web_src/js/features/comp/ReactionSelector.ts
web_src/js/features/comp/SearchUserBox.ts
web_src/js/features/repo-branch.ts
web_src/js/features/repo-graph.ts
web_src/js/features/repo-home.ts
web_src/js/vendor/jquery.are-you-sure.ts

index 986fcc11814e53fe316ffe7ec0ec7f863a18dfb4..a6a8ccd2d11e13c66b97faeabeba78d42cd145b3 100644 (file)
@@ -1,8 +1,8 @@
 <script lang="ts">
 import {createApp, nextTick} from 'vue';
-import $ from 'jquery';
 import {SvgIcon} from '../svg.ts';
 import {GET} from '../modules/fetch.ts';
+import {fomanticQuery} from '../modules/fomantic/base.ts';
 
 const {appSubUrl, assetUrlPrefix, pageData} = window.config;
 
@@ -102,7 +102,7 @@ const sfc = {
   mounted() {
     const el = document.querySelector('#dashboard-repo-list');
     this.changeReposFilter(this.reposFilter);
-    $(el).find('.dropdown').dropdown();
+    fomanticQuery(el.querySelector('.ui.dropdown')).dropdown();
     nextTick(() => {
       this.$refs.search.focus();
     });
index d44d0cd22dd2e759c8cedcda64009636a392dc1c..f42278ef6b786b814e805596a681900ccb74c3f4 100644 (file)
@@ -21,7 +21,7 @@ import {
 import {chartJsColors} from '../utils/color.ts';
 import {sleep} from '../utils.ts';
 import 'chartjs-adapter-dayjs-4/dist/chartjs-adapter-dayjs-4.esm';
-import $ from 'jquery';
+import {fomanticQuery} from '../modules/fomantic/base.ts';
 
 const customEventListener = {
   id: 'customEventListener',
@@ -77,7 +77,7 @@ export default {
   mounted() {
     this.fetchGraphData();
 
-    $('#repo-contributors').dropdown({
+    fomanticQuery('#repo-contributors').dropdown({
       onChange: (val) => {
         this.xAxisMin = this.xAxisStart;
         this.xAxisMax = this.xAxisEnd;
index ffab75c38981978cfa7da0881c8ded6b876d2693..c9b07efe77811d6e89f5ed837b8b46c99071f348 100644 (file)
@@ -1,5 +1,5 @@
-import $ from 'jquery';
 import {getCurrentLocale} from '../utils.ts';
+import {fomanticQuery} from '../modules/fomantic/base.ts';
 
 const {pageData} = window.config;
 
@@ -71,6 +71,6 @@ export async function initCitationFileCopyContent() {
       dropdownBtn.classList.remove('is-loading');
     }
 
-    $('#cite-repo-modal').modal('show');
+    fomanticQuery('#cite-repo-modal').modal('show');
   });
 }
index 719a5170b4e044b6d6b6b9a3b2dc15fa3d5343e5..1aca93169d52d02a9dcb94c09ae0687bf7600c3b 100644 (file)
@@ -1,13 +1,12 @@
-import $ from 'jquery';
-import {initAreYouSure} from '../vendor/jquery.are-you-sure.ts';
+import {applyAreYouSure, initAreYouSure} from '../vendor/jquery.are-you-sure.ts';
 import {handleGlobalEnterQuickSubmit} from './comp/QuickSubmit.ts';
 
 export function initGlobalFormDirtyLeaveConfirm() {
   initAreYouSure(window.jQuery);
   // Warn users that try to leave a page after entering data into a form.
   // Except on sign-in pages, and for forms marked as 'ignore-dirty'.
-  if (!$('.user.signin').length) {
-    $('form:not(.ignore-dirty)').areYouSure();
+  if (!document.querySelector('.page-content.user.signin')) {
+    applyAreYouSure('form:not(.ignore-dirty)');
   }
 }
 
index 9541226a7d28cbc6289e65430e085c8dbc6ec315..93459ae1a0f9b380363cbf9c62af8e059bd5f828 100644 (file)
@@ -1,7 +1,7 @@
-import $ from 'jquery';
 import {svg} from '../../svg.ts';
 import {htmlEscape} from 'escape-goat';
 import {createElementFromHTML} from '../../utils/dom.ts';
+import {fomanticQuery} from '../../modules/fomantic/base.ts';
 
 const {i18n} = window.config;
 
@@ -17,7 +17,7 @@ export function confirmModal(content, {confirmButtonColor = 'primary'} = {}) {
       </div>
     `);
     document.body.append(modal);
-    const $modal = $(modal);
+    const $modal = fomanticQuery(modal);
     $modal.modal({
       onApprove() {
         resolve(true);
index e1dd84bb14ba4c8ab6b393317ee1edefd1bcec2d..f6381c25632963060362c640932d4d6f479f80ae 100644 (file)
@@ -1,5 +1,5 @@
-import $ from 'jquery';
 import {POST} from '../../modules/fetch.ts';
+import {fomanticQuery} from '../../modules/fomantic/base.ts';
 
 export function initCompReactionSelector() {
   for (const container of document.querySelectorAll('.issue-content, .diff-file-body')) {
@@ -29,7 +29,7 @@ export function initCompReactionSelector() {
       if (data.html) {
         commentContainer.insertAdjacentHTML('beforeend', data.html);
         const bottomReactionsDropdowns = commentContainer.querySelectorAll('.bottom-reactions .dropdown.select-reaction');
-        $(bottomReactionsDropdowns).dropdown(); // re-init the dropdown
+        fomanticQuery(bottomReactionsDropdowns).dropdown(); // re-init the dropdown
       }
     });
   }
index ceb756b557bebb087e2119ac722ebe073d82ec87..2e3b3f83beea859552539737ffa599389b4df572 100644 (file)
@@ -1,5 +1,5 @@
-import $ from 'jquery';
 import {htmlEscape} from 'escape-goat';
+import {fomanticQuery} from '../../modules/fomantic/base.ts';
 
 const {appSubUrl} = window.config;
 const looksLikeEmailAddressCheck = /^\S+@\S+$/;
@@ -10,7 +10,7 @@ export function initCompSearchUserBox() {
 
   const allowEmailInput = searchUserBox.getAttribute('data-allow-email') === 'true';
   const allowEmailDescription = searchUserBox.getAttribute('data-allow-email-description') ?? undefined;
-  $(searchUserBox).search({
+  fomanticQuery(searchUserBox).search({
     minCharacters: 2,
     apiSettings: {
       url: `${appSubUrl}/user/search_candidates?q={query}`,
index 3261bfe37e5dc0939481eba1840afd146cbf1fcb..edf2f69638719a17e300fc350a4b90992b7af32c 100644 (file)
@@ -1,5 +1,5 @@
-import $ from 'jquery';
 import {toggleElem} from '../utils/dom.ts';
+import {fomanticQuery} from '../modules/fomantic/base.ts';
 
 export function initRepoBranchButton() {
   initRepoCreateBranchButton();
@@ -18,7 +18,7 @@ function initRepoCreateBranchButton() {
       const fromSpanName = el.getAttribute('data-modal-from-span') || '#modal-create-branch-from-span';
       document.querySelector(fromSpanName).textContent = el.getAttribute('data-branch-from');
 
-      $(el.getAttribute('data-modal')).modal('show');
+      fomanticQuery(el.getAttribute('data-modal')).modal('show');
     });
   }
 }
index ff64d0854bcb78da89db94212a4f648583f441f3..231a7266538546edb4f0c9c55e2fbcf6ea5f171c 100644 (file)
@@ -1,6 +1,6 @@
-import $ from 'jquery';
 import {hideElem, showElem} from '../utils/dom.ts';
 import {GET} from '../modules/fetch.ts';
+import {fomanticQuery} from '../modules/fomantic/base.ts';
 
 export function initRepoGraphGit() {
   const graphContainer = document.querySelector('#git-graph-container');
@@ -83,8 +83,8 @@ export function initRepoGraphGit() {
   }
 
   const flowSelectRefsDropdown = document.querySelector('#flow-select-refs-dropdown');
-  $(flowSelectRefsDropdown).dropdown('set selected', dropdownSelected);
-  $(flowSelectRefsDropdown).dropdown({
+  fomanticQuery(flowSelectRefsDropdown).dropdown('set selected', dropdownSelected);
+  fomanticQuery(flowSelectRefsDropdown).dropdown({
     clearable: true,
     fullTextSeach: 'exact',
     onRemove(toRemove) {
index ed1415d286a8d62b403ac6e4c255cbc727d6df66..a65a1815d21faaaf2a880cf9a45ab4189ef23b2d 100644 (file)
@@ -1,8 +1,8 @@
-import $ from 'jquery';
 import {stripTags} from '../utils.ts';
 import {hideElem, queryElemChildren, showElem} from '../utils/dom.ts';
 import {POST} from '../modules/fetch.ts';
 import {showErrorToast} from '../modules/toast.ts';
+import {fomanticQuery} from '../modules/fomantic/base.ts';
 
 const {appSubUrl} = window.config;
 
@@ -73,7 +73,7 @@ export function initRepoTopicBar() {
     }
   });
 
-  $(topicDropdown).dropdown({
+  fomanticQuery(topicDropdown).dropdown({
     allowAdditions: true,
     forceSelection: false,
     fullTextSearch: 'exact',
@@ -136,7 +136,7 @@ export function initRepoTopicBar() {
     onLabelCreate(value) {
       value = value.toLowerCase().trim();
       this.attr('data-value', value).contents().first().replaceWith(value);
-      return $(this);
+      return fomanticQuery(this);
     },
     onAdd(addedValue, _addedText, $addedChoice) {
       addedValue = addedValue.toLowerCase().trim();
index 858f9871b8b4d6f775a5e913d4a6aa149646b2c5..bd621a145e47be2ae734b748b6b9a82629cfdf0a 100644 (file)
@@ -195,3 +195,7 @@ export function initAreYouSure($) {
     });
   };
 }
+
+export function applyAreYouSure(selector: string) {
+  $(selector).areYouSure();
+}