diff options
author | HesterG <hestergong@gmail.com> | 2023-07-21 19:20:04 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-21 11:20:04 +0000 |
commit | 2f0e79e6393df13930eaa419273d24dc2ef36cfa (patch) | |
tree | 878d19f8055f7f5c5ce114620c05d18cbfb6c79a /web_src/js/svg.js | |
parent | dbbae67f44364eb965f516bfc77ba25dd5242c16 (diff) | |
download | gitea-2f0e79e6393df13930eaa419273d24dc2ef36cfa.tar.gz gitea-2f0e79e6393df13930eaa419273d24dc2ef36cfa.zip |
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="https://github.com/go-gitea/gitea/assets/17645053/6accc7b6-8d37-4e88-ae1a-bd2b3b927ea0">
Commits Page
<img width="1431" alt="Screen Shot 2023-07-06 at 12 18 34"
src="https://github.com/go-gitea/gitea/assets/17645053/2d0bf306-d1e2-45a8-a784-bc424879f537">
Specific commit -> operations -> cherry-pick
<img width="758" alt="Screen Shot 2023-07-06 at 12 23 28"
src="https://github.com/go-gitea/gitea/assets/17645053/1e557948-3881-4e45-a625-8ef36d45ae2d">
Release Page
<img width="1433" alt="Screen Shot 2023-07-06 at 12 25 05"
src="https://github.com/go-gitea/gitea/assets/17645053/3ec82af1-15a4-4162-a50b-04a9502161bb">
- Demo
https://github.com/go-gitea/gitea/assets/17645053/d45d266b-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>
Diffstat (limited to 'web_src/js/svg.js')
-rw-r--r-- | web_src/js/svg.js | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/web_src/js/svg.js b/web_src/js/svg.js index b0c55e4e37..2ef839aa21 100644 --- a/web_src/js/svg.js +++ b/web_src/js/svg.js @@ -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, |