basictable 2.0.1 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -0
- package/dist/js/basictable.js +2 -4
- package/dist/js/basictable.min.js +1 -1
- package/package.json +2 -2
- package/src/js/basictable.js +2 -2
package/README.md
CHANGED
|
@@ -16,6 +16,41 @@ The jQuery version remains the same as 1.0.0. While the source remains unchanged
|
|
|
16
16
|
|
|
17
17
|
These changes should have no impact on the way it functions in comparison with 1.x.
|
|
18
18
|
|
|
19
|
+
## Getting Started
|
|
20
|
+
|
|
21
|
+
### jQuery
|
|
22
|
+
|
|
23
|
+
Include the CSS and jQuery library in the `<head>` of your page.
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
<link rel="stylesheet" type="text/css" href="basictable.min.css" />
|
|
27
|
+
|
|
28
|
+
<script src="jquery.min.js"></script>
|
|
29
|
+
<script type="text/javascript" src="jquery.basictable.min.js"></script>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Initiate on any table(s) with:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
$('table').basictable();
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Vanilla JS
|
|
39
|
+
|
|
40
|
+
Include the CSS and basictable library in the `<head>` of your page.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
<link rel="stylesheet" type="text/css" href="basictable.min.css" />
|
|
44
|
+
|
|
45
|
+
<script type="text/javascript" src="basictable.min.js"></script>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Initiate on any table(s) with:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
new basictable('table');
|
|
52
|
+
```
|
|
53
|
+
|
|
19
54
|
## Options
|
|
20
55
|
|
|
21
56
|
Options are applicable to both the jQuery and Vanilla JS.
|
package/dist/js/basictable.js
CHANGED
|
@@ -46,9 +46,9 @@ class basictable {
|
|
|
46
46
|
} else if (table.querySelectorAll("tbody tr th").length) {
|
|
47
47
|
format = "tbody tr th";
|
|
48
48
|
} else if (table.querySelectorAll("th").length) {
|
|
49
|
-
format = "tr:first th";
|
|
49
|
+
format = "tr:first-of-type th";
|
|
50
50
|
} else {
|
|
51
|
-
format = "tr:first td";
|
|
51
|
+
format = "tr:first-of-type td";
|
|
52
52
|
}
|
|
53
53
|
table.querySelectorAll(format).forEach((heading => {
|
|
54
54
|
const colspan = parseInt(heading.getAttribute("colspan"), 10) || 1;
|
|
@@ -132,7 +132,6 @@ class basictable {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
_resize(table) {
|
|
135
|
-
console.log("resize");
|
|
136
135
|
this.tables.forEach((table => {
|
|
137
136
|
if (table.getAttribute("data-bt-active")) {
|
|
138
137
|
this._check(table);
|
|
@@ -179,4 +178,3 @@ class basictable {
|
|
|
179
178
|
}
|
|
180
179
|
}
|
|
181
180
|
}
|
|
182
|
-
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* @license Basictable - Vanilla JS | MIT | Jerry Low | https://www.github.com/jerrylow/basictable
|
|
3
3
|
*/
|
|
4
|
-
"use strict";class basictable{constructor(t,e={}){this.tableSel=t,this.options={breakpoint:null,containerBreakpoint:null,contentWrap:!0,forceResponsive:!0,noResize:!1,tableWrap:!1,showEmptyCells:!1,header:!0,...e},null===this.options.breakpoint&&null===this.options.containerBreakpoint&&(this.options.breakpoint=568),this._getTables(),this._setup()}_getTables(){this.tables=document.querySelectorAll(this.tableSel)}_setup(){this.tables.forEach((t=>{t.setAttribute("data-bt-active",!0);const e=[];if(this.options.tableWrap){const e=document.createElement("div");e.classList.add("bt-wrapper"),t.parentNode.insertBefore(e,t),e.appendChild(t)}if(this.options.header){let s="";s=t.querySelectorAll("thead tr th").length?"thead th":t.querySelectorAll("tbody tr th").length?"tbody tr th":t.querySelectorAll("th").length?"tr:first th":"tr:first td",t.querySelectorAll(s).forEach((t=>{const s=parseInt(t.getAttribute("colspan"),10)||1,i=t.closest("tr"),o=[].indexOf.call(i.parentElement.children,i);e[o]||(e[o]=[]);for(let i=0;i<s;i++)e[o].push(t)})),t.querySelectorAll("tbody tr").forEach((t=>this._setupRow(t,e))),t.querySelectorAll("tfoot tr").forEach((t=>this._setupRow(t,e)))}this.options.noResize||this._check(t)})),this.options.noResize||(this._tableResizeEvent=()=>this._resize(),window.addEventListener("resize",this._tableResizeEvent))}_setupRow(t,e){t.querySelectorAll(":scope > *").forEach((t=>{if(""!==t.innerHTML.trim()&&" "!==t.innerHTML||!this.options.showEmptyCells){const s=[].indexOf.call(t.parentElement.children,t);let i="";for(let t=0;t<e.length;t++){0!==t&&(i+=": ");i+=e[t][s].textContent}t.setAttribute("data-th",i);const o=document.createElement("span");if(o.classList.add("bt-content"),this.options.contentWrap&&t.firstChild!==o)for(t.appendChild(o);t.firstChild!==o;)o.appendChild(t.firstChild)}else t.classList("bt-hide")}))}_check(t){if(this.options.forceResponsive)null!==this.options.breakpoint&&window.innerWidth<=this.options.breakpoint||null!==this.options.containerBreakpoint&&t.parentElement.offsetWidth<=this.options.containerBreakpoint?this._start(t):this._end(t);else{t.classList.remove("bt");t.getBoundingClientRect().left+t.offsetWidth>t.parentElement.offsetWidth?this._start(t):this._end(t)}}_start(t){t.classList.add("bt"),this.options.header||t.classList.add("bt--no-header"),this.options.tableWrap&&t.closest(".bt-wrapper").classList.add("active")}_end(t){t.classList.remove("bt","bt--no-header"),this.options.tableWrap&&t.closest(".bt-wrapper").classList.remove("active")}_resize(t){
|
|
4
|
+
"use strict";class basictable{constructor(t,e={}){this.tableSel=t,this.options={breakpoint:null,containerBreakpoint:null,contentWrap:!0,forceResponsive:!0,noResize:!1,tableWrap:!1,showEmptyCells:!1,header:!0,...e},null===this.options.breakpoint&&null===this.options.containerBreakpoint&&(this.options.breakpoint=568),this._getTables(),this._setup()}_getTables(){this.tables=document.querySelectorAll(this.tableSel)}_setup(){this.tables.forEach((t=>{t.setAttribute("data-bt-active",!0);const e=[];if(this.options.tableWrap){const e=document.createElement("div");e.classList.add("bt-wrapper"),t.parentNode.insertBefore(e,t),e.appendChild(t)}if(this.options.header){let s="";s=t.querySelectorAll("thead tr th").length?"thead th":t.querySelectorAll("tbody tr th").length?"tbody tr th":t.querySelectorAll("th").length?"tr:first-of-type th":"tr:first-of-type td",t.querySelectorAll(s).forEach((t=>{const s=parseInt(t.getAttribute("colspan"),10)||1,i=t.closest("tr"),o=[].indexOf.call(i.parentElement.children,i);e[o]||(e[o]=[]);for(let i=0;i<s;i++)e[o].push(t)})),t.querySelectorAll("tbody tr").forEach((t=>this._setupRow(t,e))),t.querySelectorAll("tfoot tr").forEach((t=>this._setupRow(t,e)))}this.options.noResize||this._check(t)})),this.options.noResize||(this._tableResizeEvent=()=>this._resize(),window.addEventListener("resize",this._tableResizeEvent))}_setupRow(t,e){t.querySelectorAll(":scope > *").forEach((t=>{if(""!==t.innerHTML.trim()&&" "!==t.innerHTML||!this.options.showEmptyCells){const s=[].indexOf.call(t.parentElement.children,t);let i="";for(let t=0;t<e.length;t++){0!==t&&(i+=": ");i+=e[t][s].textContent}t.setAttribute("data-th",i);const o=document.createElement("span");if(o.classList.add("bt-content"),this.options.contentWrap&&t.firstChild!==o)for(t.appendChild(o);t.firstChild!==o;)o.appendChild(t.firstChild)}else t.classList("bt-hide")}))}_check(t){if(this.options.forceResponsive)null!==this.options.breakpoint&&window.innerWidth<=this.options.breakpoint||null!==this.options.containerBreakpoint&&t.parentElement.offsetWidth<=this.options.containerBreakpoint?this._start(t):this._end(t);else{t.classList.remove("bt");t.getBoundingClientRect().left+t.offsetWidth>t.parentElement.offsetWidth?this._start(t):this._end(t)}}_start(t){t.classList.add("bt"),this.options.header||t.classList.add("bt--no-header"),this.options.tableWrap&&t.closest(".bt-wrapper").classList.add("active")}_end(t){t.classList.remove("bt","bt--no-header"),this.options.tableWrap&&t.closest(".bt-wrapper").classList.remove("active")}_resize(t){this.tables.forEach((t=>{t.getAttribute("data-bt-active")&&this._check(t)}))}start(){this.tables.forEach((t=>{this._start(t)}))}stop(){this.tables.forEach((t=>{this._end(t)}))}restart(){this.destroy(),this._getTables(),this._setup()}destroy(){this.tables.forEach((t=>{if(t.getAttribute("data-bt-active")){t.classList.remove("bt","bt--no-header"),t.removeAttribute("data-bt-active");const e=t.querySelectorAll("td");e.forEach((t=>t.removeAttribute("data-th"))),this.options.contentWrap&&e.forEach((t=>{const e=t.querySelector(".bt-content");e&&(t.innerHTML=e.innerHTML)})),this.options.tableWrap&&(t.parentNode.outerHTML=t.parentNode.innerHTML)}})),this.options.noResize||window.removeEventListener("resize",this._tableResizeEvent)}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "basictable",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "Basic Table jQuery and Vanilla JS plugin for simple responsive tables.",
|
|
5
5
|
"main": "jquery.basictable.js",
|
|
6
6
|
"scripts": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"compile-js": "terser src/js/basictable.js --output dist/js/basictable.min.js -c -m --comments && terser src/js/basictable.js --output dist/js/basictable.js -b indent_level=2",
|
|
9
9
|
"compile-jquery": "terser src/js/jquery.basictable.js --output dist/js/jquery.basictable.min.js -c -m --comments && terser src/js/jquery.basictable.js --output dist/js/jquery.basictable.js -b indent_level=2",
|
|
10
10
|
"compile-css": "uglifycss src/css/basictable.css > dist/css/basictable.min.css --ugly-comments && beautify-css src/css/basictable.css dist/css/basictable.css",
|
|
11
|
-
"compile": "yarn compile-js && yarn compile-jquery && compile-css",
|
|
11
|
+
"compile": "yarn compile-js && yarn compile-jquery && yarn compile-css",
|
|
12
12
|
"lint": "yarn standard src/js/*.js"
|
|
13
13
|
},
|
|
14
14
|
"repository": {
|
package/src/js/basictable.js
CHANGED
|
@@ -54,9 +54,9 @@ class basictable { // eslint-disable-line no-unused-vars
|
|
|
54
54
|
} else if (table.querySelectorAll('tbody tr th').length) {
|
|
55
55
|
format = 'tbody tr th'
|
|
56
56
|
} else if (table.querySelectorAll('th').length) {
|
|
57
|
-
format = 'tr:first th'
|
|
57
|
+
format = 'tr:first-of-type th'
|
|
58
58
|
} else {
|
|
59
|
-
format = 'tr:first td'
|
|
59
|
+
format = 'tr:first-of-type td'
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
table.querySelectorAll(format).forEach(heading => {
|