diff --git a/.gitignore b/.gitignore
index 1db2414..8d5d019 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,9 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
+#lock file
+*lock.json
+
# Runtime data
pids
*.pid
diff --git a/README.md b/README.md
index 79efdb2..52a6d68 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,10 @@
-# ReactHTMLTableToExcel
-Provides a client side generation of Excel (.xls) file from HTML table element.
+# ReactHTMLTableToExcel V3
+Provides a client side generation of Excel (.xls/.xlsx) file from HTML table element.
+
[](https://travis-ci.org/zsusac/ReactHTMLTableToExcel)
-[](https://npmjs.org/package/react-html-table-to-excel)
+[](https://npmjs.org/package/react-html-table-to-excel-3)
___
No additional dependencies
@@ -12,7 +13,7 @@ ___
## Installation
```
-npm install --save react-html-table-to-excel
+npm install --save react-html-table-to-excel-3
```
## Features
@@ -31,11 +32,12 @@ Property | Type | Description
----- | ----- | -----
**table** | *string* | ID attribute of HTML table element.
**filename** | *string* | Name of Excel file.
+**filetype** | *string* | Name of File Extension for Excel file.
**sheet** | *string* | Name of Excel sheet.
**id** | *string* | ID attribute of button element.
**className** | *string* | Class attribute of button element.
**buttonText** | *string* | Button text.
-
+**children** | *element* | Child elements to render instead of the button text.
## Example
@@ -58,6 +60,7 @@ class Test extends Component {
className="download-table-xls-button"
table="table-to-xls"
filename="tablexls"
+ filetype="xls"
sheet="tablexls"
buttonText="Download as XLS"/>
@@ -85,3 +88,7 @@ class Test extends Component {
export default Test
```
+
+### NB: This repository is a super set of the original [ReactHTMLTableToExcel](https://npmjs.org/package/react-html-table-to-excel-3) package by [zsusac](https://github.com/zsusac) which is currently no longer maintained. This version adds some new features but maintains the original core.
+
+I do not retain the ownership or responsibility of this package.
\ No newline at end of file
diff --git a/index.js b/index.js
index 27bb0f1..68da4cc 100644
--- a/index.js
+++ b/index.js
@@ -26,6 +26,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
var propTypes = {
table: _propTypes2.default.string.isRequired,
filename: _propTypes2.default.string.isRequired,
+ filetype: _propTypes2.default.string,
sheet: _propTypes2.default.string.isRequired,
id: _propTypes2.default.string,
className: _propTypes2.default.string,
@@ -71,7 +72,8 @@ var ReactHTMLTableToExcel = function (_Component) {
var table = document.getElementById(this.props.table).outerHTML;
var sheet = String(this.props.sheet);
- var filename = String(this.props.filename) + '.xls';
+ var filetype = String(this.props.filetype ? this.props.filetype === 'xlsx' ? 'xlsx' : 'xls' : 'xls');
+ var filename = '' + (String(this.props.filename) + '.' + filetype);
var uri = 'data:application/vnd.ms-excel;base64,';
var template = '{table}';
@@ -112,7 +114,7 @@ var ReactHTMLTableToExcel = function (_Component) {
type: 'button',
onClick: this.handleDownload
},
- this.props.buttonText
+ this.props.children ? this.props.children : this.props.buttonText
);
}
}], [{
diff --git a/package.json b/package.json
index 3d6892f..e5904a6 100644
--- a/package.json
+++ b/package.json
@@ -1,17 +1,17 @@
{
- "name": "react-html-table-to-excel",
- "version": "2.0.0",
+ "name": "react-html-table-to-excel-3",
+ "version": "3.0.1",
"description": "Small react component for converting and downloading HTML table to Excel file",
"main": "index.js",
"scripts": {
"build": "./node_modules/.bin/babel ./src/ReactHTMLTableToExcel.jsx -o index.js",
"prepublish": "npm run build",
- "client:test": "NODE_ENV=test jest",
- "client:test:watch": "NODE_ENV=test jest --watch"
+ "client:test": "jest",
+ "client:test:watch": "jest --watch"
},
"repository": {
"type": "git",
- "url": "git+https://github.com/zsusac/ReactHTMLTableToExcel.git"
+ "url": "git+https://github.com/dqve/ReactHTMLTableToExcel.git"
},
"keywords": [
"react",
@@ -23,9 +23,9 @@
"author": "Zvonimir Susac ",
"license": "MIT",
"bugs": {
- "url": "https://github.com/zsusac/ReactHTMLTableToExcel/issues"
+ "url": "https://github.com/dqve/ReactHTMLTableToExcel/issues"
},
- "homepage": "https://github.com/zsusac/ReactHTMLTableToExcel#readme",
+ "homepage": "https://github.com/dqve/ReactHTMLTableToExcel#readme",
"jest": {
"rootDir": "./",
"moduleNameMapper": {
@@ -39,7 +39,7 @@
]
},
"peerDependencies": {
- "react": "^15.x.x"
+ "react": "^16.x.x"
},
"devDependencies": {
"babel-cli": "^6.24.1",
@@ -48,20 +48,21 @@
"babel-preset-react": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"chai": "^3.5.0",
- "chai-enzyme": "^0.6.1",
- "enzyme": "^2.8.2",
- "eslint": "^3.19.0",
- "eslint-config-airbnb": "^14.1.0",
+ "chai-enzyme": "^1.0.0-beta.1",
+ "enzyme": "^3.11.0",
+ "enzyme-adapter-react-16": "^1.15.6",
+ "eslint": "^8.18.0",
+ "eslint-config-airbnb": "^19.0.4",
"eslint-plugin-import": "^2.2.0",
- "eslint-plugin-jsx-a11y": "^5.0.1",
- "eslint-plugin-react": "^7.0.0",
- "jest": "^20.0.1",
- "react": "^15.5.4",
- "react-dom": "^15.5.4",
- "react-test-renderer": "^15.5.4",
+ "eslint-plugin-jsx-a11y": "^6.6.0",
+ "eslint-plugin-react": "^7.30.1",
+ "jest": "^20.0.4",
+ "react": "^16.14.0",
+ "react-dom": "^16.14.0",
+ "react-test-renderer": "^16.14.0",
"sinon": "^2.2.0"
},
"dependencies": {
- "prop-types": "^15.5.10"
+ "prop-types": "^15.8.1"
}
}
\ No newline at end of file
diff --git a/src/ReactHTMLTableToExcel.jsx b/src/ReactHTMLTableToExcel.jsx
index fd32011..271ef50 100644
--- a/src/ReactHTMLTableToExcel.jsx
+++ b/src/ReactHTMLTableToExcel.jsx
@@ -5,6 +5,7 @@ import PropTypes from 'prop-types';
const propTypes = {
table: PropTypes.string.isRequired,
filename: PropTypes.string.isRequired,
+ filetype: PropTypes.string,
sheet: PropTypes.string.isRequired,
id: PropTypes.string,
className: PropTypes.string,
@@ -50,7 +51,9 @@ class ReactHTMLTableToExcel extends Component {
const table = document.getElementById(this.props.table).outerHTML;
const sheet = String(this.props.sheet);
- const filename = `${String(this.props.filename)}.xls`;
+ const filetype = String((this.props.filetype)?(this.props.filetype === 'xlsx'?'xlsx':'xls'):'xls')
+ const filename = `${String(this.props.filename) + '.' + filetype}`;
+
const uri = 'data:application/vnd.ms-excel;base64,';
const template =
@@ -101,7 +104,7 @@ class ReactHTMLTableToExcel extends Component {
type="button"
onClick={this.handleDownload}
>
- {this.props.buttonText}
+ {this.props.children ? this.props.children : this.props.buttonText}
);
}
diff --git a/test/index.test.js b/test/index.test.js
index 734604e..d1e4c97 100644
--- a/test/index.test.js
+++ b/test/index.test.js
@@ -1,10 +1,14 @@
import React from 'react';
import chai, { expect } from 'chai';
import chaiEnzyme from 'chai-enzyme';
+import { configure } from 'enzyme';
+import Adapter from 'enzyme-adapter-react-16';
import { shallow } from 'enzyme';
import sinon from 'sinon';
import ReactHTMLTableToExcel from '../src/ReactHTMLTableToExcel';
+configure({ adapter: new Adapter() });
+
chai.use(chaiEnzyme());
const props = {