@@ -1829,14 +1829,22 @@ href="https://doc.rust-lang.org/${channel}/rustdoc/read-documentation/search.htm
1829
1829
copyContentToClipboard ( codeElem . textContent ) ;
1830
1830
}
1831
1831
1832
- function addCopyButton ( event ) {
1832
+ function getExampleWrap ( event ) {
1833
1833
let elem = event . target ;
1834
1834
while ( ! hasClass ( elem , "example-wrap" ) ) {
1835
1835
elem = elem . parentElement ;
1836
1836
if ( elem . tagName === "body" || hasClass ( elem , "docblock" ) ) {
1837
- return ;
1837
+ return null ;
1838
1838
}
1839
1839
}
1840
+ return elem ;
1841
+ }
1842
+
1843
+ function addCopyButton ( event ) {
1844
+ const elem = getExampleWrap ( event ) ;
1845
+ if ( elem === null ) {
1846
+ return ;
1847
+ }
1840
1848
// Since the button will be added, no need to keep this listener around.
1841
1849
elem . removeEventListener ( "mouseover" , addCopyButton ) ;
1842
1850
@@ -1858,7 +1866,20 @@ href="https://doc.rust-lang.org/${channel}/rustdoc/read-documentation/search.htm
1858
1866
parent . appendChild ( copyButton ) ;
1859
1867
}
1860
1868
1869
+ function showHideCodeExampleButtons ( event ) {
1870
+ const elem = getExampleWrap ( event ) ;
1871
+ if ( elem === null ) {
1872
+ return ;
1873
+ }
1874
+ const buttons = elem . querySelector ( ".button-holder" ) ;
1875
+ if ( buttons === null ) {
1876
+ return ;
1877
+ }
1878
+ buttons . classList . toggle ( "keep-visible" ) ;
1879
+ }
1880
+
1861
1881
onEachLazy ( document . querySelectorAll ( ".docblock .example-wrap" ) , elem => {
1862
1882
elem . addEventListener ( "mouseover" , addCopyButton ) ;
1883
+ elem . addEventListener ( "click" , showHideCodeExampleButtons ) ;
1863
1884
} ) ;
1864
1885
} ( ) ) ;
0 commit comments