mirror of
https://github.com/go-gitea/gitea.git
synced 2025-12-05 12:50:23 +01:00
Backport #36078 by @a1012112796 fix #36071 looks that's because if an svg in hiden env, it's color added by `fill="url(#a)"` will become not usefull. by ai helping, I think moving it out of page by position is a good solution. fell free creat a new pull request if you have a better soluton. Thanks. <img width="2198" height="1120" alt="image" src="https://github.com/user-attachments/assets/bbf7c171-0b7f-412a-a1bc-aea3f1629636" /> Signed-off-by: a1012112796 <1012112796@qq.com> Co-authored-by: a1012112796 <1012112796@qq.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
parent
0ab447005d
commit
544450a212
@ -76,7 +76,7 @@ func (m *MaterialIconProvider) renderFileIconSVG(p *RenderedIconPool, name, svg,
|
|||||||
if p.IconSVGs[svgID] == "" {
|
if p.IconSVGs[svgID] == "" {
|
||||||
p.IconSVGs[svgID] = svgHTML
|
p.IconSVGs[svgID] = svgHTML
|
||||||
}
|
}
|
||||||
return template.HTML(`<svg ` + svgCommonAttrs + `><use xlink:href="#` + svgID + `"></use></svg>`)
|
return template.HTML(`<svg ` + svgCommonAttrs + `><use href="#` + svgID + `"></use></svg>`)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MaterialIconProvider) EntryIconHTML(p *RenderedIconPool, entry *EntryInfo) template.HTML {
|
func (m *MaterialIconProvider) EntryIconHTML(p *RenderedIconPool, entry *EntryInfo) template.HTML {
|
||||||
|
|||||||
@ -25,7 +25,7 @@ func (p *RenderedIconPool) RenderToHTML() template.HTML {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
sb := &strings.Builder{}
|
sb := &strings.Builder{}
|
||||||
sb.WriteString(`<div class=tw-hidden>`)
|
sb.WriteString(`<div class="svg-icon-container">`)
|
||||||
for _, icon := range p.IconSVGs {
|
for _, icon := range p.IconSVGs {
|
||||||
sb.WriteString(string(icon))
|
sb.WriteString(string(icon))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,7 @@ func TestTransformDiffTreeForWeb(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
mockIconForFile := func(id string) template.HTML {
|
mockIconForFile := func(id string) template.HTML {
|
||||||
return template.HTML(`<svg class="svg git-entry-icon octicon-file" width="16" height="16" aria-hidden="true"><use xlink:href="#` + id + `"></use></svg>`)
|
return template.HTML(`<svg class="svg git-entry-icon octicon-file" width="16" height="16" aria-hidden="true"><use href="#` + id + `"></use></svg>`)
|
||||||
}
|
}
|
||||||
assert.Equal(t, WebDiffFileTree{
|
assert.Equal(t, WebDiffFileTree{
|
||||||
TreeRoot: WebDiffFileItem{
|
TreeRoot: WebDiffFileItem{
|
||||||
|
|||||||
@ -67,13 +67,13 @@ func TestGetTreeViewNodes(t *testing.T) {
|
|||||||
curRepoLink := "/any/repo-link"
|
curRepoLink := "/any/repo-link"
|
||||||
renderedIconPool := fileicon.NewRenderedIconPool()
|
renderedIconPool := fileicon.NewRenderedIconPool()
|
||||||
mockIconForFile := func(id string) template.HTML {
|
mockIconForFile := func(id string) template.HTML {
|
||||||
return template.HTML(`<svg class="svg git-entry-icon octicon-file" width="16" height="16" aria-hidden="true"><use xlink:href="#` + id + `"></use></svg>`)
|
return template.HTML(`<svg class="svg git-entry-icon octicon-file" width="16" height="16" aria-hidden="true"><use href="#` + id + `"></use></svg>`)
|
||||||
}
|
}
|
||||||
mockIconForFolder := func(id string) template.HTML {
|
mockIconForFolder := func(id string) template.HTML {
|
||||||
return template.HTML(`<svg class="svg git-entry-icon octicon-file-directory-fill" width="16" height="16" aria-hidden="true"><use xlink:href="#` + id + `"></use></svg>`)
|
return template.HTML(`<svg class="svg git-entry-icon octicon-file-directory-fill" width="16" height="16" aria-hidden="true"><use href="#` + id + `"></use></svg>`)
|
||||||
}
|
}
|
||||||
mockOpenIconForFolder := func(id string) template.HTML {
|
mockOpenIconForFolder := func(id string) template.HTML {
|
||||||
return template.HTML(`<svg class="svg git-entry-icon octicon-file-directory-open-fill" width="16" height="16" aria-hidden="true"><use xlink:href="#` + id + `"></use></svg>`)
|
return template.HTML(`<svg class="svg git-entry-icon octicon-file-directory-open-fill" width="16" height="16" aria-hidden="true"><use href="#` + id + `"></use></svg>`)
|
||||||
}
|
}
|
||||||
treeNodes, err := GetTreeViewNodes(ctx, curRepoLink, renderedIconPool, ctx.Repo.Commit, "", "")
|
treeNodes, err := GetTreeViewNodes(ctx, curRepoLink, renderedIconPool, ctx.Repo.Commit, "", "")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|||||||
@ -1,17 +1,24 @@
|
|||||||
.svg {
|
/* some material icons have "fill=none" (e.g.: ".txt -> document"), so the CSS styles shouldn't overwrite it,
|
||||||
|
and material icons should have no "fill" set explicitly, otherwise some like ".editorconfig" won't render correctly */
|
||||||
|
.svg:not(.git-entry-icon) {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: text-top;
|
vertical-align: text-top;
|
||||||
fill: currentcolor;
|
fill: currentcolor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.svg.git-entry-icon {
|
|
||||||
fill: transparent; /* some material icons have dark background fill, so need to reset */
|
|
||||||
}
|
|
||||||
|
|
||||||
.middle .svg {
|
.middle .svg {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* some browsers like Chrome have a bug: when a SVG is in a "display: none" container and referenced
|
||||||
|
somewhere else by `<use href="#id">`, it won't be rendered correctly. e.g.: ".kts -> kotlin" */
|
||||||
|
.svg-icon-container {
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
/* prevent SVGs from shrinking, like in space-starved flexboxes. the sizes
|
/* prevent SVGs from shrinking, like in space-starved flexboxes. the sizes
|
||||||
here are cherry-picked for our use cases, feel free to add more. after
|
here are cherry-picked for our use cases, feel free to add more. after
|
||||||
https://developer.mozilla.org/en-US/docs/Web/CSS/attr#type-or-unit is
|
https://developer.mozilla.org/en-US/docs/Web/CSS/attr#type-or-unit is
|
||||||
|
|||||||
@ -17,7 +17,7 @@ export function createViewFileTreeStore(props: {repoLink: string, treePath: stri
|
|||||||
if (!document.querySelector(`.global-svg-icon-pool #${svgId}`)) poolSvgs.push(svgContent);
|
if (!document.querySelector(`.global-svg-icon-pool #${svgId}`)) poolSvgs.push(svgContent);
|
||||||
}
|
}
|
||||||
if (poolSvgs.length) {
|
if (poolSvgs.length) {
|
||||||
const svgContainer = createElementFromHTML(html`<div class="global-svg-icon-pool tw-hidden"></div>`);
|
const svgContainer = createElementFromHTML(html`<div class="global-svg-icon-pool svg-icon-container"></div>`);
|
||||||
svgContainer.innerHTML = poolSvgs.join('');
|
svgContainer.innerHTML = poolSvgs.join('');
|
||||||
document.body.append(svgContainer);
|
document.body.append(svgContainer);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user