Compare commits

...

29 Commits

Author SHA1 Message Date
Zeno Rocha
fddd2aac5f 2.0.6 2020-03-04 22:26:34 -08:00
Zeno Rocha
e430d056ad Fix "isSupported" behavior - Closes #666 2020-03-04 22:24:24 -08:00
Zeno Rocha
289389322e 2.0.5 2020-03-03 18:20:40 -08:00
LeuisKen
894a3bef4a chore: make babel not transform es modules. 2020-03-03 18:09:24 -08:00
LeuisKen
780d390856 chore: fix es6 export issue. 2020-03-03 18:09:24 -08:00
LeuisKen
5de8be447f fix: change export from commonjs to es module for import from src usage. 2020-03-03 18:09:24 -08:00
Zeno Rocha
132fcd16b1 Add Stale Bot 2020-02-29 12:18:50 -08:00
Zeno Rocha
e7f0ff0392 Fix composer deprecated package #659 2020-02-29 10:03:07 -08:00
domecardillo
393dbe34e0 replaced invalid property url with homepage in composer.json authors array 2020-02-29 09:55:42 -08:00
Zeno Rocha
d3fc3c1e7b Regenerate package-lock and dist files after PhantomJS removal 2020-02-29 09:55:14 -08:00
ossdev
83824fa248 ClipboardJS: Removed PhantomJS Dependency
Added karma-chrome-launcher dependency

Signed-off-by: ossdev <ossdev@puresoftware.com>
2020-02-29 09:53:41 -08:00
ryanmcdonough
ce79f170aa Create LICENSE 2019-12-27 20:56:56 -03:00
Christian Oliff
4c3a086866 HTTPS relevant links 2019-12-27 20:56:29 -03:00
Bjorn Hansen
20f64d82d0 Update broken link to Primer Tooltops doc 2019-04-18 14:23:49 -07:00
Christian Oliff
85981026d1 update URL in banner 2019-03-05 11:03:02 -08:00
Rouven Weßling
6802a86f60 Set babel-preset-env into UglifyJS compatability mode 2018-11-14 20:16:46 -08:00
Rouven Weßling
3522504d34 Remove the unused dev dependency babel-cli 2018-11-14 20:16:46 -08:00
Zeno Rocha
d17eca050e 2.0.4 2018-11-12 20:42:07 -08:00
kovenliao
5381600a26 fix webpack umd build (#599) 2018-11-12 20:35:19 -08:00
Zeno Rocha
5be63e28dd 2.0.3 2018-11-11 18:56:51 -08:00
Rouven Weßling
adc669df06 Always run webpack in production mode. (#595)
Otherwise horribly inefficent code that evals(!) strings of code is generated.
2018-11-11 18:53:43 -08:00
Rouven Weßling
b57e6d019f Don't claim to support ESM 2018-11-11 18:51:00 -08:00
Rouven Weßling
3d005b547e Maintain banner in minified file 2018-11-11 18:49:23 -08:00
Zeno Rocha
cf9e8fd7ce Updates devDependencies 2018-11-11 09:58:44 -08:00
Zeno Rocha
f1d99de5d3 Removes .npmignore file 2018-11-11 09:48:15 -08:00
Zeno Rocha
fdb66d3f16 2.0.2 2018-11-11 09:14:19 -08:00
Zeno Rocha
e0f82241d0 Removes bundle analyzer 2018-11-11 09:10:37 -08:00
Zeno Rocha
4d4c25c505 Updates Webpack CLI 2018-11-11 08:20:47 -08:00
Samuel Oloruntoba
5ef3f1a817 Migrates to Webpack 4 2018-11-11 08:17:25 -08:00
18 changed files with 7713 additions and 686 deletions

View File

@@ -1,4 +1,13 @@
{
"presets": ["es2015"],
"plugins": ["transform-es2015-modules-umd"]
"presets": [
[
"env",
{
"targets": {
"uglify": true
},
"modules": false
}
]
]
}

21
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

2
.gitignore vendored
View File

@@ -2,3 +2,5 @@ lib
npm-debug.log
bower_components
node_modules
yarn-error.log
yarn.lock

View File

@@ -1,7 +0,0 @@
/.*/
/demo/
/test/
/.*
/bower.json
/karma.conf.js
/src

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) Zeno Rocha
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,6 +1,6 @@
{
"name": "clipboard",
"version": "2.0.0",
"version": "2.0.6",
"description": "Modern copy to clipboard. No Flash. Just 3kb",
"license": "MIT",
"main": "dist/clipboard.js",

View File

@@ -6,11 +6,11 @@
"authors": [
{
"name": "Zeno Rocha",
"url": "http://zenorocha.com/"
"homepage": "http://zenorocha.com/"
}
],
"require": {
"robloach/component-installer": "*"
"oomphinc/composer-installers-extender": "*"
},
"extra": {
"component": {

1282
dist/clipboard.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -2,14 +2,13 @@ var webpackConfig = require('./webpack.config.js');
module.exports = function (karma) {
karma.set({
plugins: ['karma-webpack', 'karma-chai', 'karma-sinon', 'karma-mocha', 'karma-phantomjs-launcher'],
plugins: ['karma-webpack', 'karma-chai', 'karma-sinon', 'karma-mocha', 'karma-chrome-launcher'],
frameworks: ['chai', 'sinon', 'mocha'],
files: [
'src/**/*.js',
'test/**/*.js',
'./node_modules/phantomjs-polyfill/bind-polyfill.js'
],
preprocessors: {
@@ -26,6 +25,6 @@ module.exports = function (karma) {
stats: 'errors-only'
},
browsers: ['PhantomJS']
browsers: ['ChromeHeadless']
});
};

6945
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
Package.describe({
name: "zenorocha:clipboard",
summary: "Modern copy to clipboard. No Flash. Just 3kb.",
version: "2.0.0",
version: "2.0.6",
git: "https://github.com/zenorocha/clipboard.js"
});

View File

@@ -1,11 +1,10 @@
{
"name": "clipboard",
"version": "2.0.1",
"version": "2.0.6",
"description": "Modern copy to clipboard. No Flash. Just 2kb",
"repository": "zenorocha/clipboard.js",
"license": "MIT",
"main": "dist/clipboard.js",
"module": "dist/clipboard.js",
"keywords": [
"clipboard",
"copy",
@@ -17,28 +16,27 @@
"tiny-emitter": "^2.0.0"
},
"devDependencies": {
"babel-cli": "^6.5.1",
"babel-core": "^6.5.2",
"babel-loader": "^6.2.10",
"babel-plugin-transform-es2015-modules-umd": "^6.5.0",
"babel-preset-es2015": "^6.5.0",
"chai": "^3.4.1",
"cross-env": "^3.1.4",
"karma": "^1.3.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.4",
"babel-preset-env": "^1.7.0",
"chai": "^4.2.0",
"cross-env": "^5.2.0",
"karma": "^3.1.1",
"karma-chai": "^0.1.0",
"karma-mocha": "^1.2.0",
"karma-phantomjs-launcher": "^1.0.0",
"karma-chrome-launcher": "^2.2.0",
"karma-sinon": "^1.0.4",
"karma-webpack": "^2.0.2",
"mocha": "^3.1.2",
"phantomjs-prebuilt": "^2.1.4",
"sinon": "^1.17.2",
"webpack": "^2.2.1"
"karma-webpack": "^3.0.5",
"mocha": "^5.2.0",
"sinon": "^7.1.1",
"uglifyjs-webpack-plugin": "^2.0.1",
"webpack": "^4.5.0",
"webpack-cli": "^3.1.2"
},
"scripts": {
"build": "npm run build-debug && npm run build-min",
"build-debug": "webpack",
"build-min": "cross-env NODE_ENV=production webpack --optimize-minimize",
"build-min": "cross-env NODE_ENV=production webpack",
"build-watch": "webpack --watch",
"test": "karma start --single-run",
"prepublish": "npm run build"

View File

@@ -39,7 +39,7 @@ new ClipboardJS('.btn');
Internally, we need to fetch all elements that matches with your selector and attach event listeners for each one. But guess what? If you have hundreds of matches, this operation can consume a lot of memory.
For this reason we use [event delegation](http://stackoverflow.com/questions/1687296/what-is-dom-event-delegation) which replaces multiple event listeners with just a single listener. After all, [#perfmatters](https://twitter.com/hashtag/perfmatters).
For this reason we use [event delegation](https://stackoverflow.com/questions/1687296/what-is-dom-event-delegation) which replaces multiple event listeners with just a single listener. After all, [#perfmatters](https://twitter.com/hashtag/perfmatters).
# Usage
@@ -125,7 +125,7 @@ For a live demonstration, go to this [site](https://clipboardjs.com/) and open y
Each application has different design needs, that's why clipboard.js does not include any CSS or built-in tooltip solution.
The tooltips you see on the [demo site](https://clipboardjs.com/) were built using [GitHub's Primer](https://github.com/primer/primer-css/tree/master/modules/primer-tooltips). You may want to check that out if you're looking for a similar look and feel.
The tooltips you see on the [demo site](https://clipboardjs.com/) were built using [GitHub's Primer](https://primer.style/css/components/tooltips). You may want to check that out if you're looking for a similar look and feel.
## Advanced Options
@@ -168,7 +168,7 @@ clipboard.destroy();
## Browser Support
This library relies on both [Selection](https://developer.mozilla.org/en-US/docs/Web/API/Selection) and [execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand) APIs. The first one is [supported by all browsers](http://caniuse.com/#search=selection) while the second one is supported in the following browsers.
This library relies on both [Selection](https://developer.mozilla.org/en-US/docs/Web/API/Selection) and [execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand) APIs. The first one is [supported by all browsers](https://caniuse.com/#search=selection) while the second one is supported in the following browsers.
| <img src="https://clipboardjs.com/assets/images/chrome.png" width="48px" height="48px" alt="Chrome logo"> | <img src="https://clipboardjs.com/assets/images/edge.png" width="48px" height="48px" alt="Edge logo"> | <img src="https://clipboardjs.com/assets/images/firefox.png" width="48px" height="48px" alt="Firefox logo"> | <img src="https://clipboardjs.com/assets/images/ie.png" width="48px" height="48px" alt="Internet Explorer logo"> | <img src="https://clipboardjs.com/assets/images/opera.png" width="48px" height="48px" alt="Opera logo"> | <img src="https://clipboardjs.com/assets/images/safari.png" width="48px" height="48px" alt="Safari logo"> |
|:---:|:---:|:---:|:---:|:---:|:---:|
@@ -186,4 +186,4 @@ Install for [Chrome](https://chrome.google.com/webstore/detail/codecopy/fkbfebkc
## License
[MIT License](http://zenorocha.mit-license.org/) © Zeno Rocha
[MIT License](https://zenorocha.mit-license.org/) © Zeno Rocha

View File

@@ -137,7 +137,7 @@ class ClipboardAction {
if (this.trigger) {
this.trigger.focus();
}
document.activeElement.blur();
window.getSelection().removeAllRanges();
}
@@ -201,4 +201,4 @@ class ClipboardAction {
}
}
module.exports = ClipboardAction;
export default ClipboardAction;

View File

@@ -132,4 +132,4 @@ function getAttributeValue(suffix, element) {
return element.getAttribute(attribute);
}
module.exports = Clipboard;
export default Clipboard;

View File

@@ -110,12 +110,12 @@ describe('Clipboard', () => {
describe('#static isSupported', () => {
it('should return the support of the given action', () => {
assert.equal(Clipboard.isSupported('copy'), false);
assert.equal(Clipboard.isSupported('cut'), false);
assert.equal(Clipboard.isSupported('copy'), true);
assert.equal(Clipboard.isSupported('cut'), true);
});
it('should return the support of the cut and copy actions', () => {
assert.equal(Clipboard.isSupported(), false);
assert.equal(Clipboard.isSupported(), true);
});
});

View File

@@ -1,20 +1,24 @@
const pkg = require('./package.json');
const path = require('path');
const webpack = require('webpack');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const production = process.env.NODE_ENV === 'production' || false;
const banner = `clipboard.js v${pkg.version}
https://zenorocha.github.io/clipboard.js
https://clipboardjs.com/
Licensed MIT © Zeno Rocha`;
module.exports = {
entry: './src/clipboard.js',
mode: 'production',
output: {
filename: production ? 'clipboard.min.js' : 'clipboard.js',
path: path.resolve(__dirname, 'dist'),
library: 'ClipboardJS',
globalObject: 'this',
libraryExport: 'default',
libraryTarget: 'umd'
},
module: {
@@ -22,20 +26,21 @@ module.exports = {
{test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'}
]
},
plugins: production ? [
new webpack.optimize.UglifyJsPlugin({
beautify: false,
mangle: {
screw_ie8: true,
keep_fnames: true
},
compress: {
screw_ie8: true
},
comments: false
}),
new webpack.BannerPlugin({banner})
] : [
new webpack.BannerPlugin({banner})
optimization: {
minimize: production,
minimizer: [
new UglifyJSPlugin({
parallel: require('os').cpus().length,
uglifyOptions: {
ie8: false,
keep_fnames: false,
output: {
beautify: false,
comments: (node, {value, type}) => type == 'comment2' && value.startsWith('!')
}
}
})
]
},
plugins: [new webpack.BannerPlugin({ banner })]
};