Use frontend fetch for branch dropdown component (#25719)
- Send request to get branch/tag list, use loading icon when waiting for response. - Only fetch when the first time branch/tag list shows. - For backend, removed assignment to `ctx.Data["Branches"]` and `ctx.Data["Tags"]` from `context/repo.go` and passed these data wherever needed. - Changed some `v-if` to `v-show` and used native `svg` as mentioned in https://github.com/go-gitea/gitea/pull/25719#issuecomment-1631712757 to improve perfomance when there are a lot of branches. - Places Used the dropdown component: Repo Home Page <img width="1429" alt="Screen Shot 2023-07-06 at 12 17 51" src="6accc7b6
-8d37-4e88-ae1a-bd2b3b927ea0"> Commits Page <img width="1431" alt="Screen Shot 2023-07-06 at 12 18 34" src="2d0bf306
-d1e2-45a8-a784-bc424879f537"> Specific commit -> operations -> cherry-pick <img width="758" alt="Screen Shot 2023-07-06 at 12 23 28" src="1e557948
-3881-4e45-a625-8ef36d45ae2d"> Release Page <img width="1433" alt="Screen Shot 2023-07-06 at 12 25 05" src="3ec82af1
-15a4-4162-a50b-04a9502161bb"> - Demod45d266b
-3eb0-465a-82f9-57f78dc5f9f3 - Note: UI of dropdown menu could be improved in another PR as it should apply to more dropdown menus. Fix #14180 --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
parent
dbbae67f44
commit
2f0e79e639
13 changed files with 218 additions and 66 deletions
|
@ -185,9 +185,10 @@ export const SvgIcon = {
|
|||
name: {type: String, required: true},
|
||||
size: {type: Number, default: 16},
|
||||
className: {type: String, default: ''},
|
||||
symbolId: {type: String}
|
||||
},
|
||||
render() {
|
||||
const {svgOuter, svgInnerHtml} = svgParseOuterInner(this.name);
|
||||
let {svgOuter, svgInnerHtml} = svgParseOuterInner(this.name);
|
||||
// https://vuejs.org/guide/extras/render-function.html#creating-vnodes
|
||||
// the `^` is used for attr, set SVG attributes like 'width', `aria-hidden`, `viewBox`, etc
|
||||
const attrs = {};
|
||||
|
@ -207,7 +208,10 @@ export const SvgIcon = {
|
|||
if (this.className) {
|
||||
classes.push(...this.className.split(/\s+/).filter(Boolean));
|
||||
}
|
||||
|
||||
if (this.symbolId) {
|
||||
classes.push('gt-hidden', 'svg-symbol-container');
|
||||
svgInnerHtml = `<symbol id="${this.symbolId}" viewBox="${attrs['^viewBox']}">${svgInnerHtml}</symbol>`;
|
||||
}
|
||||
// create VNode
|
||||
return h('svg', {
|
||||
...attrs,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue