mirror of
https://github.com/rust-lang/mdBook
synced 2024-12-04 18:19:27 +00:00
Merge pull request #2421 from GuillaumeGomez/copy-code
Unify copy to clipboard icon with docs.rs, rustdoc and crates.io
This commit is contained in:
commit
5194d2b3cd
3 changed files with 56 additions and 7 deletions
|
@ -225,7 +225,7 @@ function playground_text(playground, hidden = true) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var clipButton = document.createElement('button');
|
var clipButton = document.createElement('button');
|
||||||
clipButton.className = 'fa fa-copy clip-button';
|
clipButton.className = 'clip-button';
|
||||||
clipButton.title = 'Copy to clipboard';
|
clipButton.title = 'Copy to clipboard';
|
||||||
clipButton.setAttribute('aria-label', clipButton.title);
|
clipButton.setAttribute('aria-label', clipButton.title);
|
||||||
clipButton.innerHTML = '<i class=\"tooltiptext\"></i>';
|
clipButton.innerHTML = '<i class=\"tooltiptext\"></i>';
|
||||||
|
@ -258,7 +258,7 @@ function playground_text(playground, hidden = true) {
|
||||||
|
|
||||||
if (window.playground_copyable) {
|
if (window.playground_copyable) {
|
||||||
var copyCodeClipboardButton = document.createElement('button');
|
var copyCodeClipboardButton = document.createElement('button');
|
||||||
copyCodeClipboardButton.className = 'fa fa-copy clip-button';
|
copyCodeClipboardButton.className = 'clip-button';
|
||||||
copyCodeClipboardButton.innerHTML = '<i class="tooltiptext"></i>';
|
copyCodeClipboardButton.innerHTML = '<i class="tooltiptext"></i>';
|
||||||
copyCodeClipboardButton.title = 'Copy to clipboard';
|
copyCodeClipboardButton.title = 'Copy to clipboard';
|
||||||
copyCodeClipboardButton.setAttribute('aria-label', copyCodeClipboardButton.title);
|
copyCodeClipboardButton.setAttribute('aria-label', copyCodeClipboardButton.title);
|
||||||
|
@ -597,12 +597,12 @@ function playground_text(playground, hidden = true) {
|
||||||
|
|
||||||
function hideTooltip(elem) {
|
function hideTooltip(elem) {
|
||||||
elem.firstChild.innerText = "";
|
elem.firstChild.innerText = "";
|
||||||
elem.className = 'fa fa-copy clip-button';
|
elem.className = 'clip-button';
|
||||||
}
|
}
|
||||||
|
|
||||||
function showTooltip(elem, msg) {
|
function showTooltip(elem, msg) {
|
||||||
elem.firstChild.innerText = msg;
|
elem.firstChild.innerText = msg;
|
||||||
elem.className = 'fa fa-copy tooltipped';
|
elem.className = 'clip-button tooltipped';
|
||||||
}
|
}
|
||||||
|
|
||||||
var clipboardSnippets = new ClipboardJS('.clip-button', {
|
var clipboardSnippets = new ClipboardJS('.clip-button', {
|
||||||
|
|
|
@ -250,8 +250,8 @@ pre > .buttons i {
|
||||||
pre > .buttons button {
|
pre > .buttons button {
|
||||||
cursor: inherit;
|
cursor: inherit;
|
||||||
margin: 0px 5px;
|
margin: 0px 5px;
|
||||||
padding: 3px 5px;
|
padding: 4px 4px 3px 5px;
|
||||||
font-size: 14px;
|
font-size: 23px;
|
||||||
|
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
|
@ -262,6 +262,27 @@ pre > .buttons button {
|
||||||
transition-property: color,border-color,background-color;
|
transition-property: color,border-color,background-color;
|
||||||
color: var(--icons);
|
color: var(--icons);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pre > .buttons button.clip-button {
|
||||||
|
padding: 2px 4px 0px 6px;
|
||||||
|
}
|
||||||
|
pre > .buttons button.clip-button::before {
|
||||||
|
/* clipboard image from octicons (https://github.com/primer/octicons/tree/v2.0.0) MIT license
|
||||||
|
*/
|
||||||
|
content: url('data:image/svg+xml,<svg width="21" height="20" viewBox="0 0 24 25" \
|
||||||
|
xmlns="http://www.w3.org/2000/svg" aria-label="Copy to clipboard">\
|
||||||
|
<path d="M18 20h2v3c0 1-1 2-2 2H2c-.998 0-2-1-2-2V5c0-.911.755-1.667 1.667-1.667h5A3.323 3.323 0 \
|
||||||
|
0110 0a3.323 3.323 0 013.333 3.333h5C19.245 3.333 20 4.09 20 5v8.333h-2V9H2v14h16v-3zM3 \
|
||||||
|
7h14c0-.911-.793-1.667-1.75-1.667H13.5c-.957 0-1.75-.755-1.75-1.666C11.75 2.755 10.957 2 10 \
|
||||||
|
2s-1.75.755-1.75 1.667c0 .911-.793 1.666-1.75 1.666H4.75C3.793 5.333 3 6.09 3 7z"/>\
|
||||||
|
<path d="M4 19h6v2H4zM12 11H4v2h8zM4 17h4v-2H4zM15 15v-3l-4.5 4.5L15 21v-3l8.027-.032L23 15z"/>\
|
||||||
|
</svg>');
|
||||||
|
filter: var(--copy-button-filter);
|
||||||
|
}
|
||||||
|
pre > .buttons button.clip-button:hover::before {
|
||||||
|
filter: var(--copy-button-filter-hover);
|
||||||
|
}
|
||||||
|
|
||||||
@media (pointer: coarse) {
|
@media (pointer: coarse) {
|
||||||
pre > .buttons button {
|
pre > .buttons button {
|
||||||
/* On mobile, make it easier to tap buttons. */
|
/* On mobile, make it easier to tap buttons. */
|
||||||
|
|
|
@ -56,6 +56,11 @@
|
||||||
--search-mark-bg: #e3b171;
|
--search-mark-bg: #e3b171;
|
||||||
|
|
||||||
--color-scheme: dark;
|
--color-scheme: dark;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(45%) sepia(6%) saturate(621%) hue-rotate(198deg) brightness(99%) contrast(85%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(68%) sepia(55%) saturate(531%) hue-rotate(341deg) brightness(104%) contrast(101%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.coal {
|
.coal {
|
||||||
|
@ -100,6 +105,11 @@
|
||||||
--search-mark-bg: #355c7d;
|
--search-mark-bg: #355c7d;
|
||||||
|
|
||||||
--color-scheme: dark;
|
--color-scheme: dark;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(26%) sepia(8%) saturate(575%) hue-rotate(169deg) brightness(87%) contrast(82%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(36%) sepia(70%) saturate(503%) hue-rotate(167deg) brightness(98%) contrast(89%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.light {
|
.light {
|
||||||
|
@ -144,6 +154,11 @@
|
||||||
--search-mark-bg: #a2cff5;
|
--search-mark-bg: #a2cff5;
|
||||||
|
|
||||||
--color-scheme: light;
|
--color-scheme: light;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(45.49%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(14%) sepia(93%) saturate(4250%) hue-rotate(243deg) brightness(99%) contrast(130%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.navy {
|
.navy {
|
||||||
|
@ -188,6 +203,11 @@
|
||||||
--search-mark-bg: #a2cff5;
|
--search-mark-bg: #a2cff5;
|
||||||
|
|
||||||
--color-scheme: dark;
|
--color-scheme: dark;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(51%) sepia(10%) saturate(393%) hue-rotate(198deg) brightness(86%) contrast(87%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(46%) sepia(20%) saturate(1537%) hue-rotate(156deg) brightness(85%) contrast(90%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.rust {
|
.rust {
|
||||||
|
@ -231,7 +251,10 @@
|
||||||
--searchresults-li-bg: #dec2a2;
|
--searchresults-li-bg: #dec2a2;
|
||||||
--search-mark-bg: #e69f67;
|
--search-mark-bg: #e69f67;
|
||||||
|
|
||||||
--color-scheme: light;
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(51%) sepia(10%) saturate(393%) hue-rotate(198deg) brightness(86%) contrast(87%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(77%) sepia(16%) saturate(1798%) hue-rotate(328deg) brightness(98%) contrast(83%);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
|
@ -275,5 +298,10 @@
|
||||||
--searchresults-border-color: #98a3ad;
|
--searchresults-border-color: #98a3ad;
|
||||||
--searchresults-li-bg: #2b2b2f;
|
--searchresults-li-bg: #2b2b2f;
|
||||||
--search-mark-bg: #355c7d;
|
--search-mark-bg: #355c7d;
|
||||||
|
|
||||||
|
/* Same as `--icons` */
|
||||||
|
--copy-button-filter: invert(26%) sepia(8%) saturate(575%) hue-rotate(169deg) brightness(87%) contrast(82%);
|
||||||
|
/* Same as `--sidebar-active` */
|
||||||
|
--copy-button-filter-hover: invert(36%) sepia(70%) saturate(503%) hue-rotate(167deg) brightness(98%) contrast(89%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue