mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Fine tune markdown editor toolbar (#24046)
1. Remove unnecessary `btn-link` `muted` classes
* Link is link, button is button, I can't see a real requirement to make
a button like a link.
* If anyone insists, please help to show me real example from modern
frameworks / websites, how and why they do so.
    * No need to duplicate a lot of class names on similar elements
* Declare styles clearly, for example, `markdown-toolbar` itself should
have `display: flex`, but not use `gt-df` to overwrite the `display:
block`.
2. Remove unnecessary `role` attribute
    * https://github.com/github/markdown-toolbar-element/issues/70
* The `markdown-toolbar-element` does want to add `role=button`, but
there is a bug.
* So we do the similar thing as upstream does (add the role by JS),
until they fix their bugs.
3. Indent `markdown-switch-easymde` (before it doesn't have a proper
indent)
Screenshot:

			
			
This commit is contained in:
		@@ -19,28 +19,28 @@ Template Attributes:
 | 
			
		||||
	</div>
 | 
			
		||||
	{{end}}
 | 
			
		||||
	<div class="ui tab active" data-tab-panel="markdown-writer">
 | 
			
		||||
		<markdown-toolbar class="gt-df gt-ac gt-gap-3">
 | 
			
		||||
		<markdown-toolbar class="gt-gap-3">
 | 
			
		||||
			<div class="markdown-toolbar-group">
 | 
			
		||||
				<md-header role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.heading.tooltip"}}">{{svg "octicon-heading"}}</md-header>
 | 
			
		||||
				<md-bold role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.bold.tooltip"}}">{{svg "octicon-bold"}}</md-bold>
 | 
			
		||||
				<md-italic role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.italic.tooltip"}}">{{svg "octicon-italic"}}</md-italic>
 | 
			
		||||
				<md-header class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.heading.tooltip"}}">{{svg "octicon-heading"}}</md-header>
 | 
			
		||||
				<md-bold class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.bold.tooltip"}}">{{svg "octicon-bold"}}</md-bold>
 | 
			
		||||
				<md-italic class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.italic.tooltip"}}">{{svg "octicon-italic"}}</md-italic>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="markdown-toolbar-group">
 | 
			
		||||
				<md-quote role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.quote.tooltip"}}">{{svg "octicon-quote"}}</md-quote>
 | 
			
		||||
				<md-code role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.code.tooltip"}}">{{svg "octicon-code"}}</md-code>
 | 
			
		||||
				<md-link role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.link.tooltip"}}">{{svg "octicon-link"}}</md-link>
 | 
			
		||||
				<md-quote class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.quote.tooltip"}}">{{svg "octicon-quote"}}</md-quote>
 | 
			
		||||
				<md-code class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.code.tooltip"}}">{{svg "octicon-code"}}</md-code>
 | 
			
		||||
				<md-link class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.link.tooltip"}}">{{svg "octicon-link"}}</md-link>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="markdown-toolbar-group">
 | 
			
		||||
				<md-unordered-list role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.list.unordered.tooltip"}}">{{svg "octicon-list-unordered"}}</md-unordered-list>
 | 
			
		||||
				<md-ordered-list role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.list.ordered.tooltip"}}">{{svg "octicon-list-ordered"}}</md-ordered-list>
 | 
			
		||||
				<md-task-list role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.list.task.tooltip"}}">{{svg "octicon-tasklist"}}</md-task-list>
 | 
			
		||||
				<md-unordered-list class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.list.unordered.tooltip"}}">{{svg "octicon-list-unordered"}}</md-unordered-list>
 | 
			
		||||
				<md-ordered-list class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.list.ordered.tooltip"}}">{{svg "octicon-list-ordered"}}</md-ordered-list>
 | 
			
		||||
				<md-task-list class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.list.task.tooltip"}}">{{svg "octicon-tasklist"}}</md-task-list>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="markdown-toolbar-group">
 | 
			
		||||
				<md-mention role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.mention.tooltip"}}">{{svg "octicon-mention"}}</md-mention>
 | 
			
		||||
				<md-ref role="button" class="markdown-toolbar-button btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.ref.tooltip"}}">{{svg "octicon-cross-reference"}}</md-ref>
 | 
			
		||||
				<md-mention class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.mention.tooltip"}}">{{svg "octicon-mention"}}</md-mention>
 | 
			
		||||
				<md-ref class="markdown-toolbar-button" data-tooltip-content="{{.locale.Tr "editor.buttons.ref.tooltip"}}">{{svg "octicon-cross-reference"}}</md-ref>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="markdown-toolbar-group gt-f1 gt-je">
 | 
			
		||||
			<button class="markdown-toolbar-button markdown-switch-easymde btn-link muted" data-tooltip-content="{{.locale.Tr "editor.buttons.switch_to_legacy.tooltip"}}">{{svg "octicon-arrow-switch"}}</button>
 | 
			
		||||
			<div class="markdown-toolbar-group">
 | 
			
		||||
				<button class="markdown-toolbar-button markdown-switch-easymde" data-tooltip-content="{{.locale.Tr "editor.buttons.switch_to_legacy.tooltip"}}">{{svg "octicon-arrow-switch"}}</button>
 | 
			
		||||
			</div>
 | 
			
		||||
		</markdown-toolbar>
 | 
			
		||||
		<text-expander keys=": @">
 | 
			
		||||
 
 | 
			
		||||
@@ -328,27 +328,14 @@ progress::-moz-progress-bar {
 | 
			
		||||
  user-select: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.btn-link {
 | 
			
		||||
  background: none;
 | 
			
		||||
  border: none;
 | 
			
		||||
  color: var(--color-primary);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a:hover,
 | 
			
		||||
.btn-link:hover {
 | 
			
		||||
  text-decoration: underline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a,
 | 
			
		||||
.ui.breadcrumb a,
 | 
			
		||||
.btn-link {
 | 
			
		||||
.ui.breadcrumb a {
 | 
			
		||||
  color: var(--color-primary);
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
  text-decoration-skip-ink: all;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a.muted,
 | 
			
		||||
.btn-link.muted,
 | 
			
		||||
.muted-links a {
 | 
			
		||||
  color: inherit;
 | 
			
		||||
}
 | 
			
		||||
@@ -356,7 +343,6 @@ a.muted,
 | 
			
		||||
a:hover,
 | 
			
		||||
a.muted:hover,
 | 
			
		||||
a.muted:hover [class*="color-text"],
 | 
			
		||||
.btn-link.muted:hover,
 | 
			
		||||
.muted-links a:hover,
 | 
			
		||||
.ui.breadcrumb a:hover {
 | 
			
		||||
  color: var(--color-primary);
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,8 @@
 | 
			
		||||
 | 
			
		||||
.combo-markdown-editor markdown-toolbar {
 | 
			
		||||
  cursor: default;
 | 
			
		||||
  display: block;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  padding-bottom: 10px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -12,9 +13,21 @@
 | 
			
		||||
  display: flex;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.combo-markdown-editor .markdown-toolbar-group:last-child {
 | 
			
		||||
  flex: 1;
 | 
			
		||||
  justify-content: flex-end;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.combo-markdown-editor .markdown-toolbar-button {
 | 
			
		||||
  border: none;
 | 
			
		||||
  background: none;
 | 
			
		||||
  user-select: none;
 | 
			
		||||
  padding: 5px;
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.combo-markdown-editor .markdown-toolbar-button:hover {
 | 
			
		||||
  color: var(--color-primary);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui.form .combo-markdown-editor textarea.markdown-text-editor,
 | 
			
		||||
 
 | 
			
		||||
@@ -70,7 +70,10 @@ class ComboMarkdownEditor {
 | 
			
		||||
 | 
			
		||||
    this.textareaMarkdownToolbar = this.container.querySelector('markdown-toolbar');
 | 
			
		||||
    this.textareaMarkdownToolbar.setAttribute('for', this.textarea.id);
 | 
			
		||||
 | 
			
		||||
    for (const el of this.textareaMarkdownToolbar.querySelectorAll('.markdown-toolbar-button')) {
 | 
			
		||||
      // upstream bug: The role code is never executed in base MarkdownButtonElement https://github.com/github/markdown-toolbar-element/issues/70
 | 
			
		||||
      el.setAttribute('role', 'button');
 | 
			
		||||
    }
 | 
			
		||||
    this.switchToEasyMDEButton = this.container.querySelector('.markdown-switch-easymde');
 | 
			
		||||
    this.switchToEasyMDEButton?.addEventListener('click', async (e) => {
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user