2024-07-07 18:32:30 +03:00
import { hideElem , showElem , toggleElem } from '../utils/dom.ts' ;
import { GET } from '../modules/fetch.ts' ;
2023-07-27 13:47:41 +03:00
2024-12-11 11:29:04 +03:00
async function loadBranchesAndTags ( area : Element , loadingButton : Element ) {
2023-07-27 13:47:41 +03:00
loadingButton . classList . add ( 'disabled' ) ;
try {
2023-09-19 03:50:30 +03:00
const res = await GET ( loadingButton . getAttribute ( 'data-fetch-url' ) ) ;
2023-07-27 13:47:41 +03:00
const data = await res . json ( ) ;
hideElem ( loadingButton ) ;
addTags ( area , data . tags ) ;
addBranches ( area , data . branches , data . default_branch ) ;
showElem ( area . querySelectorAll ( '.branch-and-tag-detail' ) ) ;
} finally {
loadingButton . classList . remove ( 'disabled' ) ;
}
}
2024-12-11 11:29:04 +03:00
function addTags ( area : Element , tags : Array < Record < string , any > > ) {
2023-07-27 13:47:41 +03:00
const tagArea = area . querySelector ( '.tag-area' ) ;
2023-07-28 18:05:24 +03:00
toggleElem ( tagArea . parentElement , tags . length > 0 ) ;
2023-07-27 13:47:41 +03:00
for ( const tag of tags ) {
addLink ( tagArea , tag . web_link , tag . name ) ;
}
}
2024-12-11 11:29:04 +03:00
function addBranches ( area : Element , branches : Array < Record < string , any > > , defaultBranch : string ) {
2023-07-27 13:47:41 +03:00
const defaultBranchTooltip = area . getAttribute ( 'data-text-default-branch-tooltip' ) ;
const branchArea = area . querySelector ( '.branch-area' ) ;
2023-07-28 18:05:24 +03:00
toggleElem ( branchArea . parentElement , branches . length > 0 ) ;
2023-07-27 13:47:41 +03:00
for ( const branch of branches ) {
const tooltip = defaultBranch === branch . name ? defaultBranchTooltip : null ;
addLink ( branchArea , branch . web_link , branch . name , tooltip ) ;
}
}
2024-12-11 11:29:04 +03:00
function addLink ( parent : Element , href : string , text : string , tooltip? : string ) {
2023-07-27 13:47:41 +03:00
const link = document . createElement ( 'a' ) ;
Migrate margin and padding helpers to tailwind (#30043)
This will conclude the refactor of 1:1 class replacements to tailwind,
except `gt-hidden`. Commands ran:
```bash
perl -p -i -e 's#gt-(p|m)([lrtbxy])?-0#tw-$1$2-0#g' {web_src/js,templates,routers,services}/**/*
perl -p -i -e 's#gt-(p|m)([lrtbxy])?-1#tw-$1$2-0.5#g' {web_src/js,templates,routers,services}/**/*
perl -p -i -e 's#gt-(p|m)([lrtbxy])?-2#tw-$1$2-1#g' {web_src/js,templates,routers,services}/**/*
perl -p -i -e 's#gt-(p|m)([lrtbxy])?-3#tw-$1$2-2#g' {web_src/js,templates,routers,services}/**/*
perl -p -i -e 's#gt-(p|m)([lrtbxy])?-4#tw-$1$2-4#g' {web_src/js,templates,routers,services}/**/*
perl -p -i -e 's#gt-(p|m)([lrtbxy])?-5#tw-$1$2-8#g' {web_src/js,templates,routers,services}/**/*
```
2024-03-24 19:42:49 +03:00
link . classList . add ( 'muted' , 'tw-px-1' ) ;
2023-07-27 13:47:41 +03:00
link . href = href ;
link . textContent = text ;
if ( tooltip ) {
2024-03-18 17:47:05 +03:00
link . classList . add ( 'tw-border' , 'tw-border-secondary' , 'tw-rounded' ) ;
2023-07-27 13:47:41 +03:00
link . setAttribute ( 'data-tooltip-content' , tooltip ) ;
}
parent . append ( link ) ;
}
export function initRepoDiffCommitBranchesAndTags() {
for ( const area of document . querySelectorAll ( '.branch-and-tag-area' ) ) {
const btn = area . querySelector ( '.load-branches-and-tags' ) ;
btn . addEventListener ( 'click' , ( ) = > loadBranchesAndTags ( area , btn ) ) ;
}
}