diff options
author | Guillaume <me@gsvd.dev> | 2025-02-27 14:40:12 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-27 19:40:12 +0000 |
commit | 303af554c9bc7b22d5182a6fe9e22192a546cd41 (patch) | |
tree | 4e8540df87abe0f94913be5da22b8cdaa2643ee3 /web_src/js/components | |
parent | 8362a4155929007b8d02b63a2e657557edb08fb9 (diff) | |
download | gitea-303af554c9bc7b22d5182a6fe9e22192a546cd41.tar.gz gitea-303af554c9bc7b22d5182a6fe9e22192a546cd41.zip |
Improve "generate new access token" form (#33730)
Fix: https://github.com/go-gitea/gitea/issues/33519
As discussed in [PR
#33614](https://github.com/go-gitea/gitea/pull/33614), the
ScopedAccessTokenSelector Vue component is not particularly useful.
This PR removes the component and reverts to using HTML templates. It
also introduces some (hopefully) useful refactoring.
The Vue component was causing the UX bug reported in the linked issue.
Required form fields are now properly working, as expected (see
screenshot).

---------
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'web_src/js/components')
-rw-r--r-- | web_src/js/components/ScopedAccessTokenSelector.vue | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/web_src/js/components/ScopedAccessTokenSelector.vue b/web_src/js/components/ScopedAccessTokenSelector.vue deleted file mode 100644 index 9eaf824035..0000000000 --- a/web_src/js/components/ScopedAccessTokenSelector.vue +++ /dev/null @@ -1,81 +0,0 @@ -<script lang="ts" setup> -import {computed, onMounted, onUnmounted} from 'vue'; -import {hideElem, showElem} from '../utils/dom.ts'; - -const props = defineProps<{ - isAdmin: boolean; - noAccessLabel: string; - readLabel: string; - writeLabel: string; -}>(); - -const categories = computed(() => { - const categories = [ - 'activitypub', - ]; - if (props.isAdmin) { - categories.push('admin'); - } - categories.push( - 'issue', - 'misc', - 'notification', - 'organization', - 'package', - 'repository', - 'user'); - return categories; -}); - -onMounted(() => { - document.querySelector('#scoped-access-submit').addEventListener('click', onClickSubmit); -}); - -onUnmounted(() => { - document.querySelector('#scoped-access-submit').removeEventListener('click', onClickSubmit); -}); - -function onClickSubmit(e: Event) { - e.preventDefault(); - - const warningEl = document.querySelector('#scoped-access-warning'); - // check that at least one scope has been selected - for (const el of document.querySelectorAll<HTMLInputElement>('.access-token-select')) { - if (el.value) { - // Hide the error if it was visible from previous attempt. - hideElem(warningEl); - // Submit the form. - document.querySelector<HTMLFormElement>('#scoped-access-form').submit(); - // Don't show the warning. - return; - } - } - // no scopes selected, show validation error - showElem(warningEl); -} -</script> - -<template> - <div v-for="category in categories" :key="category" class="field tw-pl-1 tw-pb-1 access-token-category"> - <label class="category-label" :for="'access-token-scope-' + category"> - {{ category }} - </label> - <div class="gitea-select"> - <select - class="ui selection access-token-select" - name="scope" - :id="'access-token-scope-' + category" - > - <option value=""> - {{ noAccessLabel }} - </option> - <option :value="'read:' + category"> - {{ readLabel }} - </option> - <option :value="'write:' + category"> - {{ writeLabel }} - </option> - </select> - </div> - </div> -</template> |