diff options
author | Sarah German <sgerman@gitlab.com> | 2022-06-28 01:03:37 +0300 |
---|---|---|
committer | David O'Regan <doregan@gitlab.com> | 2022-06-28 11:49:20 +0300 |
commit | ce8150cd679fd93bc849073b8fc3a54a554abd84 (patch) | |
tree | e35f010702c85a7a44bc2d523f817e79f83c25be | |
parent | 40cc22d12e91830a0d8d14d08db9aba475f9ee72 (diff) |
Bundle ClipboardJS with yarn361-clipboard-cdn
-rw-r--r-- | content/assets/javascripts/clipboardjs.js | 42 | ||||
-rw-r--r-- | content/frontend/shared/clipboardjs.js | 44 | ||||
-rw-r--r-- | layouts/archives.html | 3 | ||||
-rw-r--r-- | layouts/default.html | 3 | ||||
-rw-r--r-- | package.json | 1 | ||||
-rw-r--r-- | yarn.lock | 31 |
6 files changed, 78 insertions, 46 deletions
diff --git a/content/assets/javascripts/clipboardjs.js b/content/assets/javascripts/clipboardjs.js deleted file mode 100644 index 92cd0ae3..00000000 --- a/content/assets/javascripts/clipboardjs.js +++ /dev/null @@ -1,42 +0,0 @@ ---- -version: 2 ---- - -// Add a copy button to every fenced code block -$('pre').append($('<button class="clip-btn" title="Click to copy" data-selector="true"><%= icon("copy-to-clipboard") %></button>')); - -// Tooltip -$('button').tooltip({ - trigger: 'click', - placement: 'left' -}); - -function setTooltip(btn, message) { - $(btn).tooltip('hide') - .attr('data-original-title', message) - .tooltip('show'); -} - -function hideTooltip(btn) { - setTimeout(function() { - $(btn).tooltip('hide'); - }, 1000); -} - -// trigger clipboardjs -var clipboard = new ClipboardJS('.clip-btn', { - target: function(trigger) { - return trigger.previousElementSibling; - } -}); - -clipboard.on('success', function(e) { - setTooltip(e.trigger, 'Copied!'); - hideTooltip(e.trigger); - e.clearSelection(); -}); - -clipboard.on('error', function(e) { - setTooltip(e.trigger, 'Failed!'); - hideTooltip(e.trigger); -}); diff --git a/content/frontend/shared/clipboardjs.js b/content/frontend/shared/clipboardjs.js new file mode 100644 index 00000000..ef76cb2e --- /dev/null +++ b/content/frontend/shared/clipboardjs.js @@ -0,0 +1,44 @@ +/* global $ */ + +import ClipboardJS from 'clipboard'; + +// Add a copy button to every fenced code block +const icon = + '<svg role="img" aria-label="" class="gl-icon ml-1 mr-1 s16"><use href="/assets/images/icons.svg#copy-to-clipboard"></use></svg>'; +$('pre').append( + $(`<button class="clip-btn" title="Click to copy" data-selector="true">${icon}</button>`), +); + +// Tooltip +$('button').tooltip({ + trigger: 'click', + placement: 'left', +}); + +function setTooltip(btn, message) { + $(btn).tooltip('hide').attr('data-original-title', message).tooltip('show'); +} + +function hideTooltip(btn) { + setTimeout(function hide() { + $(btn).tooltip('hide'); + }, 1000); +} + +// trigger clipboardjs +const clipboard = new ClipboardJS('.clip-btn', { + target: function triggerClipboard(trigger) { + return trigger.previousElementSibling; + }, +}); + +clipboard.on('success', function clipboardSuccess(e) { + setTooltip(e.trigger, 'Copied!'); + hideTooltip(e.trigger); + e.clearSelection(); +}); + +clipboard.on('error', function clipboardFail(e) { + setTooltip(e.trigger, 'Failed!'); + hideTooltip(e.trigger); +}); diff --git a/layouts/archives.html b/layouts/archives.html index fb9eaaaa..530d3fa1 100644 --- a/layouts/archives.html +++ b/layouts/archives.html @@ -24,10 +24,9 @@ <div class="doc-nav"></div> </div> <script src="<%= @items['/frontend/shared/global_imports.*'].path %>"></script> - <script src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js"></script> <script src="<%= @items['/frontend/search/docsearch.*'].path %>"></script> <script src="<%= @items['/frontend/header/index.*'].path %>"></script> - <script type="application/javascript" src="<%= @items['/assets/javascripts/clipboardjs.*'].path %>"></script> + <script src="<%= @items['/frontend/shared/clipboardjs.*'].path %>"></script> <script type="application/javascript" src="<%= @items['/assets/javascripts/badges.*'].path %>"></script> <% if production? %> <%# Add analytics only in production %> diff --git a/layouts/default.html b/layouts/default.html index 227d60a9..65c9071a 100644 --- a/layouts/default.html +++ b/layouts/default.html @@ -96,8 +96,7 @@ <script src="<%= @items['/frontend/shared/global_imports.*'].path %>"></script> <script src="<%= @items['/frontend/search/docsearch.*'].path %>"></script> <script src="<%= @items['/assets/javascripts/toggle_popover.*'].path %>"></script> - <script src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js"></script> - <script src="<%= @items['/assets/javascripts/clipboardjs.*'].path %>"></script> + <script src="<%= @items['/frontend/shared/clipboardjs.*'].path %>"></script> <script src="<%= @items['/assets/javascripts/badges.*'].path %>"></script> <script src="<%= @items['/assets/javascripts/mermaid.*'].path %>"></script> <% if production? %> diff --git a/package.json b/package.json index 43c76767..2b5c4647 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "@rollup/plugin-image": "^2.1.1", "algoliasearch": "^4.13.1", "bootstrap": "^4.6.1", + "clipboard": "^2.0.11", "compare-versions": "^4.1.3", "eslint-plugin-filenames": "^1.3.2", "instantsearch.css": "^7.4.5", @@ -2317,6 +2317,15 @@ clean-regexp@^1.0.0: dependencies: escape-string-regexp "^1.0.5" +clipboard@^2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5" + integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw== + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -2665,6 +2674,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -3441,6 +3455,13 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== + dependencies: + delegate "^3.1.2" + graceful-fs@^4.1.2, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" @@ -5705,6 +5726,11 @@ search-insights@^2.1.0: resolved "https://registry.yarnpkg.com/search-insights/-/search-insights-2.2.1.tgz#9c93344fbae5fbf2f88c1a81b46b4b5d888c11f7" integrity sha512-JDfVGZbKqTtiKVZjAVbkNw9C9f0ib80yx6Ea17M3z4RvPmuD0GYWXuFwA9++dpbreBEMH4TC3lQ29Zq7O4b5oA== +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== + "semver@2 || 3 || 4 || 5", semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -6130,6 +6156,11 @@ throat@^6.0.1: resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== +tiny-emitter@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" |