tidy-table 4.0.1 → 4.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/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [4.0.0] - 2023-03-04
8
+
9
+ ### Changed
10
+
11
+ The following items are **breaking changes** and not supported in prior releases.
12
+
13
+ - Updated future releases to be installed via [NPM](https://npmjs.com) vs [Bower](https://bower.io) (legacy only).
14
+ - Refactored instance arguments `new TidyTable(container, settings, options)`
15
+ - Renamed TR className/CSS selector `sort-desc`, `sort-asc` to `arrow-up`, `arrow-down`
16
+ - Replaced GIF images with SVG equivalent (renamed) `arrow-up.svg`, `arrow-down.svg`
17
+ - Replaced [QUnit](https://qunitjs.com) testing with [WebdriverIO](https://webdriver.io) framework.
18
+ - Integrated [Babel](https://babeljs.io) transpilation build process.
package/README.md CHANGED
@@ -39,7 +39,7 @@ After you [build the distribution sources](#cli-options) the set-up is fairly si
39
39
  <link rel="stylesheet" href="path/to/tidy-table.min.css" media="all" />
40
40
 
41
41
  <script type="text/javascript">
42
- var tidyTable = tidyTable(container, settings, options);
42
+ tidyTable(container, settings, options);
43
43
  </script>
44
44
  ```
45
45
 
@@ -54,7 +54,13 @@ import 'tidy-table/dist/tidy-table.css';
54
54
  const tidyTable = new TidyTable(container, settings, options);
55
55
  ```
56
56
 
57
- ## HTML markup
57
+ ### HTML markup
58
+
59
+ ```html
60
+ <div id="tidy-table"></div>
61
+ ```
62
+
63
+ ### Example
58
64
 
59
65
  ```javascript
60
66
  const options = {
@@ -95,6 +101,10 @@ const settings = {
95
101
  return val?.replace(/\$|%|#/g, '');
96
102
  }
97
103
  };
104
+
105
+ const container = document.getElementById('tidy-table');
106
+
107
+ const tidyTable = new TidyTable(container, settings, options);
98
108
  ```
99
109
 
100
110
  ## Table options
@@ -108,6 +118,61 @@ Overriding defaults can be done using the following options:
108
118
  | reverseSortDir | Change the sorting arrow image direction. | false |
109
119
  | responsive | Enable/disable responsive layout support. | false |
110
120
 
121
+ ## Post-processing examples
122
+
123
+ There are times where you may need to customize the table result behavior. This can be achieved using `postProcess` hooks.
124
+
125
+ ### Hide the second column of table results
126
+
127
+ ```javascript
128
+ function callback(table) {
129
+ const cols = table.querySelectorAll('th:nth-child(2), td:nth-child(2)');
130
+
131
+ for (let i = 0; i < cols.length; i++) {
132
+ cols[i].style.display = 'none';
133
+ }
134
+ }
135
+ ```
136
+
137
+ ### Create text field on column click event
138
+
139
+ ```javascript
140
+ function callback(col) {
141
+ col.addEventListener('click', function() {
142
+ if (!this.querySelector('form')) {
143
+ const form = document.createElement('form');
144
+ form.addEventListener('submit', function() {
145
+ const xhr = new XMLHttpRequest();
146
+ xhr.open('POST', '/path/to/script');
147
+ xhr.send(null);
148
+ });
149
+
150
+ const field = document.createElement('input');
151
+ field.setAttribute('type', 'text');
152
+ field.setAttribute('value', this.textContent);
153
+
154
+ const button = document.createElement('input');
155
+ button.setAttribute('type', 'submit');
156
+
157
+ form.appendChild(field).appendChild(button);
158
+
159
+ this.removeChild(this.firstChild);
160
+ this.appendChild(form);
161
+ });
162
+ }
163
+ }
164
+ ```
165
+
166
+ ### Hide select menu when cookie doesn't exist
167
+
168
+ ```javascript
169
+ function callback(menu) {
170
+ if (!getCookie('session')) {
171
+ menu.style.display = 'none';
172
+ }
173
+ }
174
+ ```
175
+
111
176
  ## Design template
112
177
 
113
178
  The Illustrator [template](https://github.com/nuxy/tidy-table/blob/develop/images/arrow.ai) used to create the sort arrows has been provided with this package for reference.
@@ -344,6 +344,7 @@ function TidyTable(container, settings, options) {
344
344
  function cmpInt(a, b) {
345
345
  return b - a;
346
346
  }
347
+ return self;
347
348
  }
348
349
 
349
350
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tidy-table.js","names":["TidyTable","container","settings","options","self","defaults","enableCheckbox","enableMenu","reverseSortDir","responsive","Object","assign","columnTitles","columnValues","length","renderTable","Error","_settings$postProcess","table","createTableElm","postProcess","block","querySelector","parentNode","replaceChild","appendChild","createMenuElm","classList","add","document","createElement","createTableHeaderElm","createTableBodyElm","rows","querySelectorAll","i","input","createCheckboxElm","col","addEventListener","toggleSelRows","index","bind","insertBefore","firstChild","tbody","vals","row","j","_settings$postProcess2","val","createTextNode","setAttribute","column","thead","titles","sortOrder","_loop","title","selected","className","sortByColumn","name","_settings$postProcess3","select","callback","menuOptions","value","getCheckedAsObj","option","text","menu","objs","cols","childNodes","checked","textContent","push","num","replace","order","sortByPattern","reverse","sort","a","b","str1","str2","isNaN","cmpAny","cmpInt","window","tidyTable","module","exports"],"sources":["../src/tidy-table.js"],"sourcesContent":["/**\n * tidy-table\n * Create a HTML table that can be sorted, selected and\n * post-processed using a simple callback.\n *\n * Copyright 2012-2023, Marc S. Brooks (https://mbrooks.info)\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n */\n\n'use strict';\n\n/**\n * @param {Element} container\n * Containing HTML element.\n *\n * @param {Object} settings\n * Table settings.\n *\n * @param {Object} options\n * Configuration overrides (optional).\n */\nfunction TidyTable(container, settings, options = {}) {\n const self = this;\n\n const defaults = {\n enableCheckbox: false,\n enableMenu: false,\n reverseSortDir: false,\n responsive: false\n };\n\n (function() {\n self.options = Object.assign(defaults, options);\n\n const {columnTitles, columnValues} = settings;\n\n if (columnTitles.length && columnValues.length) {\n renderTable();\n } else {\n throw new Error('Failed to initialize (missing settings)');\n }\n })();\n\n /**\n * Render a new table instance.\n */\n function renderTable() {\n const table = createTableElm();\n\n // Post-process table results HTML object.\n if (typeof settings.postProcess?.table === 'function') {\n settings.postProcess.table(table);\n }\n\n // Replace the element, if already exists.\n const block = container.querySelector('.tidy-table table');\n\n if (block) {\n block.parentNode.replaceChild(table, block);\n } else {\n\n // Generate select menu elements.\n if (self.options.enableMenu) {\n container.appendChild(createMenuElm('options'));\n }\n\n container.classList.add('tidy-table');\n container.appendChild(table);\n }\n\n // Enable/disable responsive layout support.\n if (defaults.responsive) {\n container.classList.add('responsive');\n }\n }\n\n /**\n * Create table elements.\n *\n * @return {Element}\n */\n function createTableElm() {\n const table = document.createElement('table');\n table.appendChild(createTableHeaderElm());\n table.appendChild(createTableBodyElm());\n\n // Append check boxes to beginning each row.\n if (self.options.enableCheckbox) {\n const rows = table.querySelectorAll('tr');\n\n for (let i = 0; i < rows.length; i++) {\n const input = createCheckboxElm();\n\n let col;\n\n // First row is always the header.\n if (i === 0) {\n col = document.createElement('th');\n\n // Attach event to check all boxes.\n input.addEventListener('click', function() {\n toggleSelRows(rows);\n });\n }\n else {\n col = document.createElement('td');\n\n // Attach events to each checkbox.\n input.addEventListener('click', function(index) {\n toggleSelRows(rows, index);\n }.bind(null, i), false);\n }\n\n col.appendChild(input);\n\n // Insert before first cell.\n rows[i].insertBefore(col, rows[i].firstChild);\n }\n }\n\n return table;\n }\n\n /**\n * Create table body elements.\n *\n * @return {Element}\n */\n function createTableBodyElm() {\n const tbody = document.createElement('tbody');\n\n const vals = settings.columnValues;\n\n for (let i = 0; i < vals.length; i++) {\n const row = document.createElement('tr');\n\n for (let j = 0; j < vals[i].length; j++) {\n const val = vals[i][j];\n\n const col = document.createElement('td');\n col.appendChild(document.createTextNode(val));\n col.setAttribute('title', val);\n row.appendChild(col);\n\n // Post-process table column HTML object.\n if (typeof settings.postProcess?.column === 'function') {\n settings.postProcess.column(col);\n }\n }\n\n tbody.appendChild(row);\n }\n\n return tbody;\n }\n\n /**\n * Create table header elements.\n *\n * @return {Element}\n */\n function createTableHeaderElm() {\n const thead = document.createElement('thead');\n const row = document.createElement('tr');\n\n const titles = settings.columnTitles;\n\n let sortOrder = self.sortOrder;\n\n for (let i = 0; i < titles.length; i++) {\n const title = titles[i];\n\n const col = document.createElement('th');\n col.appendChild(document.createTextNode(title));\n col.setAttribute('title', title);\n\n row.appendChild(col);\n\n if (self.selected === i) {\n let className;\n\n // Determine column result order.\n if (!self.options.reverseSortDir) {\n if (sortOrder === 'asc' || !sortOrder) {\n className = 'arrow-up';\n sortOrder = 'desc';\n }\n else {\n className = 'arrow-up';\n sortOrder = 'asc';\n }\n }\n else {\n if (sortOrder === 'desc' || !sortOrder) {\n className = 'arrow-down';\n sortOrder = 'asc';\n }\n else {\n className = 'arrow-up';\n sortOrder = 'desc';\n }\n }\n\n // Highlight selected column.\n col.classList.add(className);\n }\n\n // Attach column sorting events.\n col.addEventListener('click', function(index) {\n self.sortOrder = (self.selected === i) ? sortOrder : 'asc';\n\n sortByColumn(index, sortOrder);\n\n self.selected = index;\n\n renderTable();\n }.bind(null, i), false);\n }\n\n thead.appendChild(row);\n\n return thead;\n }\n\n /**\n * Create checkbox element.\n *\n * @returns {Element}\n */\n function createCheckboxElm() {\n const input = document.createElement('input');\n input.setAttribute('type', 'checkbox');\n\n return input;\n }\n\n /**\n * Create select menu element.\n *\n * @returns {Element}\n */\n function createMenuElm(name) {\n\n // Create reusable elements.\n const select = document.createElement('select');\n select.classList.add(name);\n\n // Listen for select menu events.\n select.addEventListener('change', function() {\n\n // Execute callback.\n const callback = settings.menuOptions[this.value][1].callback;\n\n if (typeof callback === 'function') {\n callback(getCheckedAsObj());\n }\n\n this.value = 0;\n });\n\n // .. Options\n for (let i = 0; i < settings.menuOptions.length; i++) {\n const option = document.createElement('option');\n option.text = settings.menuOptions[i][0];\n option.value = i;\n\n select.appendChild(option);\n }\n\n // Post-process select menu HTML object.\n if (typeof settings.postProcess?.menu === 'function') {\n settings.postProcess.menu(select);\n }\n\n return select;\n }\n\n /**\n * Return selected row values as array of objects.\n *\n * @returns {Array<Object>}\n */\n function getCheckedAsObj() {\n const rows = container.querySelectorAll('tbody > tr');\n const objs = [];\n\n for (let i = 0; i < rows.length; i++) {\n const cols = rows[i].childNodes;\n\n // If the row checkbox is selected.\n if (cols[0].firstChild.checked) {\n const row = [];\n\n // Simulate an associative array.\n for (let j = 1; j < cols.length; j++) {\n row[j - 1] = cols[j].textContent;\n }\n\n objs.push(row);\n }\n }\n\n return objs;\n }\n\n /**\n * Select/Deselect (input checkbox and row highlight).\n */\n function toggleSelRows(rows, num) {\n let checked;\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n\n const input = row.querySelector('input[type=checkbox]');\n\n // Update all rows.\n if (!num) {\n if (i === 0) {\n checked = input.checked;\n continue;\n }\n\n if (checked) {\n row.classList.replace('check-off', 'check-on') || row.classList.add('check-on');\n input.checked = true;\n }\n else {\n row.classList.replace('check-on', 'check-off');\n input.checked = false;\n }\n }\n\n // Update selected row.\n else {\n if (i === 0) {\n continue;\n }\n\n if (input.checked === true) {\n row.classList.replace('check-off', 'check-on') || row.classList.add('check-on');\n input.checked = true;\n }\n else {\n row.classList.replace('check-on', 'check-off');\n input.checked = false;\n }\n }\n }\n }\n\n /**\n * Display results ordered by selected column.\n */\n function sortByColumn(num, order) {\n let sortByPattern = settings.sortByPattern;\n\n if (typeof sortByPattern !== 'function') {\n sortByPattern = function(val) {\n return val?.replace(/\\$|%|#/g, '');\n };\n }\n\n const reverse = (order === 'desc') ? -1 : 1;\n\n // Sort object by array index.\n settings.columnValues.sort(function(a, b) {\n const str1 = sortByPattern(a[num]);\n const str2 = sortByPattern(b[num]);\n\n if (isNaN(str1)) {\n return [reverse * cmpAny(str1, str2)] >\n [reverse * cmpAny(str2, str1)] ? -1 : 1;\n }\n\n return [reverse * cmpInt(str1, str2)];\n });\n }\n\n /**\n * Generic string comparison functions.\n */\n function cmpAny(a, b) {\n return (a > b) ? 1 : (a < b) ? -1 : 0;\n }\n\n function cmpInt(a, b) {\n return b - a;\n }\n}\n\n/**\n * Set global/exportable instance, where supported.\n */\nwindow.tidyTable = function(container, settings, options) {\n return new TidyTable(container, settings, options);\n};\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = TidyTable;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAASA,CAACC,SAAS,EAAEC,QAAQ,EAAEC,OAAO,EAAO;EAAA,IAAdA,OAAO;IAAPA,OAAO,GAAG,CAAC,CAAC;EAAA;EAClD,IAAMC,IAAI,GAAG,IAAI;EAEjB,IAAMC,QAAQ,GAAG;IACfC,cAAc,EAAE,KAAK;IACrBC,UAAU,EAAM,KAAK;IACrBC,cAAc,EAAE,KAAK;IACrBC,UAAU,EAAM;EAClB,CAAC;EAED,CAAC,YAAW;IACVL,IAAI,CAACD,OAAO,GAAGO,MAAM,CAACC,MAAM,CAACN,QAAQ,EAAEF,OAAO,CAAC;IAE/C,IAAOS,YAAY,GAAkBV,QAAQ,CAAtCU,YAAY;MAAEC,YAAY,GAAIX,QAAQ,CAAxBW,YAAY;IAEjC,IAAID,YAAY,CAACE,MAAM,IAAID,YAAY,CAACC,MAAM,EAAE;MAC9CC,WAAW,EAAE;IACf,CAAC,MAAM;MACL,MAAM,IAAIC,KAAK,CAAC,yCAAyC,CAAC;IAC5D;EACF,CAAC,GAAG;;EAEJ;AACF;AACA;EACE,SAASD,WAAWA,CAAA,EAAG;IAAA,IAAAE,qBAAA;IACrB,IAAMC,KAAK,GAAGC,cAAc,EAAE;;IAE9B;IACA,IAAI,SAAAF,qBAAA,GAAOf,QAAQ,CAACkB,WAAW,qBAApBH,qBAAA,CAAsBC,KAAK,MAAK,UAAU,EAAE;MACrDhB,QAAQ,CAACkB,WAAW,CAACF,KAAK,CAACA,KAAK,CAAC;IACnC;;IAEA;IACA,IAAMG,KAAK,GAAGpB,SAAS,CAACqB,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAID,KAAK,EAAE;MACTA,KAAK,CAACE,UAAU,CAACC,YAAY,CAACN,KAAK,EAAEG,KAAK,CAAC;IAC7C,CAAC,MAAM;MAEL;MACA,IAAIjB,IAAI,CAACD,OAAO,CAACI,UAAU,EAAE;QAC3BN,SAAS,CAACwB,WAAW,CAACC,aAAa,CAAC,SAAS,CAAC,CAAC;MACjD;MAEAzB,SAAS,CAAC0B,SAAS,CAACC,GAAG,CAAC,YAAY,CAAC;MACrC3B,SAAS,CAACwB,WAAW,CAACP,KAAK,CAAC;IAC9B;;IAEA;IACA,IAAIb,QAAQ,CAACI,UAAU,EAAE;MACvBR,SAAS,CAAC0B,SAAS,CAACC,GAAG,CAAC,YAAY,CAAC;IACvC;EACF;;EAEA;AACF;AACA;AACA;AACA;EACE,SAAST,cAAcA,CAAA,EAAG;IACxB,IAAMD,KAAK,GAAGW,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;IAC7CZ,KAAK,CAACO,WAAW,CAACM,oBAAoB,EAAE,CAAC;IACzCb,KAAK,CAACO,WAAW,CAACO,kBAAkB,EAAE,CAAC;;IAEvC;IACA,IAAI5B,IAAI,CAACD,OAAO,CAACG,cAAc,EAAE;MAC/B,IAAM2B,IAAI,GAAGf,KAAK,CAACgB,gBAAgB,CAAC,IAAI,CAAC;MAEzC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACnB,MAAM,EAAEqB,CAAC,EAAE,EAAE;QACpC,IAAMC,KAAK,GAAGC,iBAAiB,EAAE;QAEjC,IAAIC,GAAG;;QAEP;QACA,IAAIH,CAAC,KAAK,CAAC,EAAE;UACXG,GAAG,GAAGT,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;;UAElC;UACAM,KAAK,CAACG,gBAAgB,CAAC,OAAO,EAAE,YAAW;YACzCC,aAAa,CAACP,IAAI,CAAC;UACrB,CAAC,CAAC;QACJ,CAAC,MACI;UACHK,GAAG,GAAGT,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;;UAElC;UACAM,KAAK,CAACG,gBAAgB,CAAC,OAAO,EAAE,UAASE,KAAK,EAAE;YAC9CD,aAAa,CAACP,IAAI,EAAEQ,KAAK,CAAC;UAC5B,CAAC,CAACC,IAAI,CAAC,IAAI,EAAEP,CAAC,CAAC,EAAE,KAAK,CAAC;QACzB;QAEAG,GAAG,CAACb,WAAW,CAACW,KAAK,CAAC;;QAEtB;QACAH,IAAI,CAACE,CAAC,CAAC,CAACQ,YAAY,CAACL,GAAG,EAAEL,IAAI,CAACE,CAAC,CAAC,CAACS,UAAU,CAAC;MAC/C;IACF;IAEA,OAAO1B,KAAK;EACd;;EAEA;AACF;AACA;AACA;AACA;EACE,SAASc,kBAAkBA,CAAA,EAAG;IAC5B,IAAMa,KAAK,GAAGhB,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;IAE7C,IAAMgB,IAAI,GAAG5C,QAAQ,CAACW,YAAY;IAElC,KAAK,IAAIsB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,IAAI,CAAChC,MAAM,EAAEqB,CAAC,EAAE,EAAE;MACpC,IAAMY,GAAG,GAAGlB,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;MAExC,KAAK,IAAIkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACX,CAAC,CAAC,CAACrB,MAAM,EAAEkC,CAAC,EAAE,EAAE;QAAA,IAAAC,sBAAA;QACvC,IAAMC,GAAG,GAAGJ,IAAI,CAACX,CAAC,CAAC,CAACa,CAAC,CAAC;QAEtB,IAAMV,GAAG,GAAGT,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACxCQ,GAAG,CAACb,WAAW,CAACI,QAAQ,CAACsB,cAAc,CAACD,GAAG,CAAC,CAAC;QAC7CZ,GAAG,CAACc,YAAY,CAAC,OAAO,EAAEF,GAAG,CAAC;QAC9BH,GAAG,CAACtB,WAAW,CAACa,GAAG,CAAC;;QAEpB;QACA,IAAI,SAAAW,sBAAA,GAAO/C,QAAQ,CAACkB,WAAW,qBAApB6B,sBAAA,CAAsBI,MAAM,MAAK,UAAU,EAAE;UACtDnD,QAAQ,CAACkB,WAAW,CAACiC,MAAM,CAACf,GAAG,CAAC;QAClC;MACF;MAEAO,KAAK,CAACpB,WAAW,CAACsB,GAAG,CAAC;IACxB;IAEA,OAAOF,KAAK;EACd;;EAEA;AACF;AACA;AACA;AACA;EACE,SAASd,oBAAoBA,CAAA,EAAG;IAC9B,IAAMuB,KAAK,GAAGzB,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;IAC7C,IAAMiB,GAAG,GAAKlB,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;IAE1C,IAAMyB,MAAM,GAAGrD,QAAQ,CAACU,YAAY;IAEpC,IAAI4C,SAAS,GAAGpD,IAAI,CAACoD,SAAS;IAAC,IAAAC,KAAA,YAAAA,MAAAtB,CAAA,EAES;MACtC,IAAMuB,KAAK,GAAGH,MAAM,CAACpB,CAAC,CAAC;MAEvB,IAAMG,GAAG,GAAGT,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;MACxCQ,GAAG,CAACb,WAAW,CAACI,QAAQ,CAACsB,cAAc,CAACO,KAAK,CAAC,CAAC;MAC/CpB,GAAG,CAACc,YAAY,CAAC,OAAO,EAAEM,KAAK,CAAC;MAEhCX,GAAG,CAACtB,WAAW,CAACa,GAAG,CAAC;MAEpB,IAAIlC,IAAI,CAACuD,QAAQ,KAAKxB,CAAC,EAAE;QACvB,IAAIyB,SAAS;;QAEb;QACA,IAAI,CAACxD,IAAI,CAACD,OAAO,CAACK,cAAc,EAAE;UAChC,IAAIgD,SAAS,KAAK,KAAK,IAAI,CAACA,SAAS,EAAE;YACrCI,SAAS,GAAG,UAAU;YACtBJ,SAAS,GAAG,MAAM;UACpB,CAAC,MACI;YACHI,SAAS,GAAG,UAAU;YACtBJ,SAAS,GAAG,KAAK;UACnB;QACF,CAAC,MACI;UACH,IAAIA,SAAS,KAAK,MAAM,IAAI,CAACA,SAAS,EAAE;YACtCI,SAAS,GAAG,YAAY;YACxBJ,SAAS,GAAG,KAAK;UACnB,CAAC,MACI;YACHI,SAAS,GAAG,UAAU;YACtBJ,SAAS,GAAG,MAAM;UACpB;QACF;;QAEA;QACAlB,GAAG,CAACX,SAAS,CAACC,GAAG,CAACgC,SAAS,CAAC;MAC9B;;MAEA;MACAtB,GAAG,CAACC,gBAAgB,CAAC,OAAO,EAAE,UAASE,KAAK,EAAE;QAC5CrC,IAAI,CAACoD,SAAS,GAAIpD,IAAI,CAACuD,QAAQ,KAAKxB,CAAC,GAAIqB,SAAS,GAAG,KAAK;QAE1DK,YAAY,CAACpB,KAAK,EAAEe,SAAS,CAAC;QAE9BpD,IAAI,CAACuD,QAAQ,GAAGlB,KAAK;QAErB1B,WAAW,EAAE;MACf,CAAC,CAAC2B,IAAI,CAAC,IAAI,EAAEP,CAAC,CAAC,EAAE,KAAK,CAAC;IACzB,CAAC;IAhDD,KAAK,IAAIA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoB,MAAM,CAACzC,MAAM,EAAEqB,CAAC,EAAE;MAAAsB,KAAA,CAAAtB,CAAA;IAAA;IAkDtCmB,KAAK,CAAC7B,WAAW,CAACsB,GAAG,CAAC;IAEtB,OAAOO,KAAK;EACd;;EAEA;AACF;AACA;AACA;AACA;EACE,SAASjB,iBAAiBA,CAAA,EAAG;IAC3B,IAAMD,KAAK,GAAGP,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;IAC7CM,KAAK,CAACgB,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;IAEtC,OAAOhB,KAAK;EACd;;EAEA;AACF;AACA;AACA;AACA;EACE,SAASV,aAAaA,CAACoC,IAAI,EAAE;IAAA,IAAAC,sBAAA;IAE3B;IACA,IAAMC,MAAM,GAAGnC,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;IAC/CkC,MAAM,CAACrC,SAAS,CAACC,GAAG,CAACkC,IAAI,CAAC;;IAE1B;IACAE,MAAM,CAACzB,gBAAgB,CAAC,QAAQ,EAAE,YAAW;MAE3C;MACA,IAAM0B,QAAQ,GAAG/D,QAAQ,CAACgE,WAAW,CAAC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAACF,QAAQ;MAE7D,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;QAClCA,QAAQ,CAACG,eAAe,EAAE,CAAC;MAC7B;MAEA,IAAI,CAACD,KAAK,GAAG,CAAC;IAChB,CAAC,CAAC;;IAEF;IACA,KAAK,IAAIhC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGjC,QAAQ,CAACgE,WAAW,CAACpD,MAAM,EAAEqB,CAAC,EAAE,EAAE;MACpD,IAAMkC,MAAM,GAAGxC,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;MAC/CuC,MAAM,CAACC,IAAI,GAAIpE,QAAQ,CAACgE,WAAW,CAAC/B,CAAC,CAAC,CAAC,CAAC,CAAC;MACzCkC,MAAM,CAACF,KAAK,GAAGhC,CAAC;MAEhB6B,MAAM,CAACvC,WAAW,CAAC4C,MAAM,CAAC;IAC5B;;IAEA;IACA,IAAI,SAAAN,sBAAA,GAAO7D,QAAQ,CAACkB,WAAW,qBAApB2C,sBAAA,CAAsBQ,IAAI,MAAK,UAAU,EAAE;MACpDrE,QAAQ,CAACkB,WAAW,CAACmD,IAAI,CAACP,MAAM,CAAC;IACnC;IAEA,OAAOA,MAAM;EACf;;EAEA;AACF;AACA;AACA;AACA;EACE,SAASI,eAAeA,CAAA,EAAG;IACzB,IAAMnC,IAAI,GAAGhC,SAAS,CAACiC,gBAAgB,CAAC,YAAY,CAAC;IACrD,IAAMsC,IAAI,GAAG,EAAE;IAEf,KAAK,IAAIrC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACnB,MAAM,EAAEqB,CAAC,EAAE,EAAE;MACpC,IAAMsC,IAAI,GAAGxC,IAAI,CAACE,CAAC,CAAC,CAACuC,UAAU;;MAE/B;MACA,IAAID,IAAI,CAAC,CAAC,CAAC,CAAC7B,UAAU,CAAC+B,OAAO,EAAE;QAC9B,IAAM5B,GAAG,GAAG,EAAE;;QAEd;QACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyB,IAAI,CAAC3D,MAAM,EAAEkC,CAAC,EAAE,EAAE;UACpCD,GAAG,CAACC,CAAC,GAAG,CAAC,CAAC,GAAGyB,IAAI,CAACzB,CAAC,CAAC,CAAC4B,WAAW;QAClC;QAEAJ,IAAI,CAACK,IAAI,CAAC9B,GAAG,CAAC;MAChB;IACF;IAEA,OAAOyB,IAAI;EACb;;EAEA;AACF;AACA;EACE,SAAShC,aAAaA,CAACP,IAAI,EAAE6C,GAAG,EAAE;IAChC,IAAIH,OAAO;IAEX,KAAK,IAAIxC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACnB,MAAM,EAAEqB,CAAC,EAAE,EAAE;MACpC,IAAMY,GAAG,GAAGd,IAAI,CAACE,CAAC,CAAC;MAEnB,IAAMC,KAAK,GAAGW,GAAG,CAACzB,aAAa,CAAC,sBAAsB,CAAC;;MAEvD;MACA,IAAI,CAACwD,GAAG,EAAE;QACR,IAAI3C,CAAC,KAAK,CAAC,EAAE;UACXwC,OAAO,GAAGvC,KAAK,CAACuC,OAAO;UACvB;QACF;QAEA,IAAIA,OAAO,EAAE;UACX5B,GAAG,CAACpB,SAAS,CAACoD,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,IAAIhC,GAAG,CAACpB,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC;UAC/EQ,KAAK,CAACuC,OAAO,GAAG,IAAI;QACtB,CAAC,MACI;UACH5B,GAAG,CAACpB,SAAS,CAACoD,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC;UAC9C3C,KAAK,CAACuC,OAAO,GAAG,KAAK;QACvB;MACF;;MAEA;MAAA,KACK;QACH,IAAIxC,CAAC,KAAK,CAAC,EAAE;UACX;QACF;QAEA,IAAIC,KAAK,CAACuC,OAAO,KAAK,IAAI,EAAE;UAC1B5B,GAAG,CAACpB,SAAS,CAACoD,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,IAAIhC,GAAG,CAACpB,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC;UAC/EQ,KAAK,CAACuC,OAAO,GAAG,IAAI;QACtB,CAAC,MACI;UACH5B,GAAG,CAACpB,SAAS,CAACoD,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC;UAC9C3C,KAAK,CAACuC,OAAO,GAAG,KAAK;QACvB;MACF;IACF;EACF;;EAEA;AACF;AACA;EACE,SAASd,YAAYA,CAACiB,GAAG,EAAEE,KAAK,EAAE;IAChC,IAAIC,aAAa,GAAG/E,QAAQ,CAAC+E,aAAa;IAE1C,IAAI,OAAOA,aAAa,KAAK,UAAU,EAAE;MACvCA,aAAa,GAAG,SAAAA,cAAS/B,GAAG,EAAE;QAC5B,OAAOA,GAAG,oBAAHA,GAAG,CAAE6B,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;MACpC,CAAC;IACH;IAEA,IAAMG,OAAO,GAAIF,KAAK,KAAK,MAAM,GAAI,CAAC,CAAC,GAAG,CAAC;;IAE3C;IACA9E,QAAQ,CAACW,YAAY,CAACsE,IAAI,CAAC,UAASC,CAAC,EAAEC,CAAC,EAAE;MACxC,IAAMC,IAAI,GAAGL,aAAa,CAACG,CAAC,CAACN,GAAG,CAAC,CAAC;MAClC,IAAMS,IAAI,GAAGN,aAAa,CAACI,CAAC,CAACP,GAAG,CAAC,CAAC;MAElC,IAAIU,KAAK,CAACF,IAAI,CAAC,EAAE;QACf,OAAO,CAACJ,OAAO,GAAGO,MAAM,CAACH,IAAI,EAAEC,IAAI,CAAC,CAAC,GAC9B,CAACL,OAAO,GAAGO,MAAM,CAACF,IAAI,EAAED,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;MAChD;MAEA,OAAO,CAACJ,OAAO,GAAGQ,MAAM,CAACJ,IAAI,EAAEC,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACE,SAASE,MAAMA,CAACL,CAAC,EAAEC,CAAC,EAAE;IACpB,OAAQD,CAAC,GAAGC,CAAC,GAAI,CAAC,GAAID,CAAC,GAAGC,CAAC,GAAI,CAAC,CAAC,GAAG,CAAC;EACvC;EAEA,SAASK,MAAMA,CAACN,CAAC,EAAEC,CAAC,EAAE;IACpB,OAAOA,CAAC,GAAGD,CAAC;EACd;AACF;;AAEA;AACA;AACA;AACAO,MAAM,CAACC,SAAS,GAAG,UAAS3F,SAAS,EAAEC,QAAQ,EAAEC,OAAO,EAAE;EACxD,OAAO,IAAIH,SAAS,CAACC,SAAS,EAAEC,QAAQ,EAAEC,OAAO,CAAC;AACpD,CAAC;AAED,IAAI,OAAO0F,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACC,OAAO,EAAE;EACnDD,MAAM,CAACC,OAAO,GAAG9F,SAAS;AAC5B"}
1
+ {"version":3,"file":"tidy-table.js","names":["TidyTable","container","settings","options","self","defaults","enableCheckbox","enableMenu","reverseSortDir","responsive","Object","assign","columnTitles","columnValues","length","renderTable","Error","_settings$postProcess","table","createTableElm","postProcess","block","querySelector","parentNode","replaceChild","appendChild","createMenuElm","classList","add","document","createElement","createTableHeaderElm","createTableBodyElm","rows","querySelectorAll","i","input","createCheckboxElm","col","addEventListener","toggleSelRows","index","bind","insertBefore","firstChild","tbody","vals","row","j","_settings$postProcess2","val","createTextNode","setAttribute","column","thead","titles","sortOrder","_loop","title","selected","className","sortByColumn","name","_settings$postProcess3","select","callback","menuOptions","value","getCheckedAsObj","option","text","menu","objs","cols","childNodes","checked","textContent","push","num","replace","order","sortByPattern","reverse","sort","a","b","str1","str2","isNaN","cmpAny","cmpInt","window","tidyTable","module","exports"],"sources":["../src/tidy-table.js"],"sourcesContent":["/**\n * tidy-table\n * Create a HTML table that can be sorted, selected and\n * post-processed using a simple callback.\n *\n * Copyright 2012-2023, Marc S. Brooks (https://mbrooks.info)\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n */\n\n'use strict';\n\n/**\n * @param {Element} container\n * Containing HTML element.\n *\n * @param {Object} settings\n * Table settings.\n *\n * @param {Object} options\n * Configuration overrides (optional).\n */\nfunction TidyTable(container, settings, options = {}) {\n const self = this;\n\n const defaults = {\n enableCheckbox: false,\n enableMenu: false,\n reverseSortDir: false,\n responsive: false\n };\n\n (function() {\n self.options = Object.assign(defaults, options);\n\n const {columnTitles, columnValues} = settings;\n\n if (columnTitles.length && columnValues.length) {\n renderTable();\n } else {\n throw new Error('Failed to initialize (missing settings)');\n }\n })();\n\n /**\n * Render a new table instance.\n */\n function renderTable() {\n const table = createTableElm();\n\n // Post-process table results HTML object.\n if (typeof settings.postProcess?.table === 'function') {\n settings.postProcess.table(table);\n }\n\n // Replace the element, if already exists.\n const block = container.querySelector('.tidy-table table');\n\n if (block) {\n block.parentNode.replaceChild(table, block);\n } else {\n\n // Generate select menu elements.\n if (self.options.enableMenu) {\n container.appendChild(createMenuElm('options'));\n }\n\n container.classList.add('tidy-table');\n container.appendChild(table);\n }\n\n // Enable/disable responsive layout support.\n if (defaults.responsive) {\n container.classList.add('responsive');\n }\n }\n\n /**\n * Create table elements.\n *\n * @return {Element}\n */\n function createTableElm() {\n const table = document.createElement('table');\n table.appendChild(createTableHeaderElm());\n table.appendChild(createTableBodyElm());\n\n // Append check boxes to beginning each row.\n if (self.options.enableCheckbox) {\n const rows = table.querySelectorAll('tr');\n\n for (let i = 0; i < rows.length; i++) {\n const input = createCheckboxElm();\n\n let col;\n\n // First row is always the header.\n if (i === 0) {\n col = document.createElement('th');\n\n // Attach event to check all boxes.\n input.addEventListener('click', function() {\n toggleSelRows(rows);\n });\n }\n else {\n col = document.createElement('td');\n\n // Attach events to each checkbox.\n input.addEventListener('click', function(index) {\n toggleSelRows(rows, index);\n }.bind(null, i), false);\n }\n\n col.appendChild(input);\n\n // Insert before first cell.\n rows[i].insertBefore(col, rows[i].firstChild);\n }\n }\n\n return table;\n }\n\n /**\n * Create table body elements.\n *\n * @return {Element}\n */\n function createTableBodyElm() {\n const tbody = document.createElement('tbody');\n\n const vals = settings.columnValues;\n\n for (let i = 0; i < vals.length; i++) {\n const row = document.createElement('tr');\n\n for (let j = 0; j < vals[i].length; j++) {\n const val = vals[i][j];\n\n const col = document.createElement('td');\n col.appendChild(document.createTextNode(val));\n col.setAttribute('title', val);\n row.appendChild(col);\n\n // Post-process table column HTML object.\n if (typeof settings.postProcess?.column === 'function') {\n settings.postProcess.column(col);\n }\n }\n\n tbody.appendChild(row);\n }\n\n return tbody;\n }\n\n /**\n * Create table header elements.\n *\n * @return {Element}\n */\n function createTableHeaderElm() {\n const thead = document.createElement('thead');\n const row = document.createElement('tr');\n\n const titles = settings.columnTitles;\n\n let sortOrder = self.sortOrder;\n\n for (let i = 0; i < titles.length; i++) {\n const title = titles[i];\n\n const col = document.createElement('th');\n col.appendChild(document.createTextNode(title));\n col.setAttribute('title', title);\n\n row.appendChild(col);\n\n if (self.selected === i) {\n let className;\n\n // Determine column result order.\n if (!self.options.reverseSortDir) {\n if (sortOrder === 'asc' || !sortOrder) {\n className = 'arrow-up';\n sortOrder = 'desc';\n }\n else {\n className = 'arrow-up';\n sortOrder = 'asc';\n }\n }\n else {\n if (sortOrder === 'desc' || !sortOrder) {\n className = 'arrow-down';\n sortOrder = 'asc';\n }\n else {\n className = 'arrow-up';\n sortOrder = 'desc';\n }\n }\n\n // Highlight selected column.\n col.classList.add(className);\n }\n\n // Attach column sorting events.\n col.addEventListener('click', function(index) {\n self.sortOrder = (self.selected === i) ? sortOrder : 'asc';\n\n sortByColumn(index, sortOrder);\n\n self.selected = index;\n\n renderTable();\n }.bind(null, i), false);\n }\n\n thead.appendChild(row);\n\n return thead;\n }\n\n /**\n * Create checkbox element.\n *\n * @returns {Element}\n */\n function createCheckboxElm() {\n const input = document.createElement('input');\n input.setAttribute('type', 'checkbox');\n\n return input;\n }\n\n /**\n * Create select menu element.\n *\n * @returns {Element}\n */\n function createMenuElm(name) {\n\n // Create reusable elements.\n const select = document.createElement('select');\n select.classList.add(name);\n\n // Listen for select menu events.\n select.addEventListener('change', function() {\n\n // Execute callback.\n const callback = settings.menuOptions[this.value][1].callback;\n\n if (typeof callback === 'function') {\n callback(getCheckedAsObj());\n }\n\n this.value = 0;\n });\n\n // .. Options\n for (let i = 0; i < settings.menuOptions.length; i++) {\n const option = document.createElement('option');\n option.text = settings.menuOptions[i][0];\n option.value = i;\n\n select.appendChild(option);\n }\n\n // Post-process select menu HTML object.\n if (typeof settings.postProcess?.menu === 'function') {\n settings.postProcess.menu(select);\n }\n\n return select;\n }\n\n /**\n * Return selected row values as array of objects.\n *\n * @returns {Array<Object>}\n */\n function getCheckedAsObj() {\n const rows = container.querySelectorAll('tbody > tr');\n const objs = [];\n\n for (let i = 0; i < rows.length; i++) {\n const cols = rows[i].childNodes;\n\n // If the row checkbox is selected.\n if (cols[0].firstChild.checked) {\n const row = [];\n\n // Simulate an associative array.\n for (let j = 1; j < cols.length; j++) {\n row[j - 1] = cols[j].textContent;\n }\n\n objs.push(row);\n }\n }\n\n return objs;\n }\n\n /**\n * Select/Deselect (input checkbox and row highlight).\n */\n function toggleSelRows(rows, num) {\n let checked;\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n\n const input = row.querySelector('input[type=checkbox]');\n\n // Update all rows.\n if (!num) {\n if (i === 0) {\n checked = input.checked;\n continue;\n }\n\n if (checked) {\n row.classList.replace('check-off', 'check-on') || row.classList.add('check-on');\n input.checked = true;\n }\n else {\n row.classList.replace('check-on', 'check-off');\n input.checked = false;\n }\n }\n\n // Update selected row.\n else {\n if (i === 0) {\n continue;\n }\n\n if (input.checked === true) {\n row.classList.replace('check-off', 'check-on') || row.classList.add('check-on');\n input.checked = true;\n }\n else {\n row.classList.replace('check-on', 'check-off');\n input.checked = false;\n }\n }\n }\n }\n\n /**\n * Display results ordered by selected column.\n */\n function sortByColumn(num, order) {\n let sortByPattern = settings.sortByPattern;\n\n if (typeof sortByPattern !== 'function') {\n sortByPattern = function(val) {\n return val?.replace(/\\$|%|#/g, '');\n };\n }\n\n const reverse = (order === 'desc') ? -1 : 1;\n\n // Sort object by array index.\n settings.columnValues.sort(function(a, b) {\n const str1 = sortByPattern(a[num]);\n const str2 = sortByPattern(b[num]);\n\n if (isNaN(str1)) {\n return [reverse * cmpAny(str1, str2)] >\n [reverse * cmpAny(str2, str1)] ? -1 : 1;\n }\n\n return [reverse * cmpInt(str1, str2)];\n });\n }\n\n /**\n * Generic string comparison functions.\n */\n function cmpAny(a, b) {\n return (a > b) ? 1 : (a < b) ? -1 : 0;\n }\n\n function cmpInt(a, b) {\n return b - a;\n }\n\n return self;\n}\n\n/**\n * Set global/exportable instance, where supported.\n */\nwindow.tidyTable = function(container, settings, options) {\n return new TidyTable(container, settings, options);\n};\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = TidyTable;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- "use strict";function TidyTable(i,a,n){void 0===n&&(n={});var l=this,c={enableCheckbox:!1,enableMenu:!1,reverseSortDir:!1,responsive:!1};function s(){var e,t=function(){var e=document.createElement("table");if(e.appendChild(function(){for(var e=document.createElement("thead"),o=document.createElement("tr"),r=a.columnTitles,i=l.sortOrder,t=function(t){var e,n=r[t],c=document.createElement("th");c.appendChild(document.createTextNode(n)),c.setAttribute("title",n),o.appendChild(c),l.selected===t&&(i=l.options.reverseSortDir?"desc"!==i&&i?(e="arrow-up","desc"):(e="arrow-down","asc"):"asc"!==i&&i?(e="arrow-up","asc"):(e="arrow-up","desc"),c.classList.add(e));c.addEventListener("click",function(e){l.sortOrder=l.selected===t?i:"asc",function(o,e){var r=a.sortByPattern;"function"!=typeof r&&(r=function(e){return null==e?void 0:e.replace(/\$|%|#/g,"")});var i="desc"===e?-1:1;a.columnValues.sort(function(e,t){var n=r(e[o]),c=r(t[o]);return isNaN(n)?[i*u(n,c)]>[i*u(c,n)]?-1:1:[i*function(e,t){return t-e}(n,c)]})}(e,i),l.selected=e,s()}.bind(null,t),!1)},n=0;n<r.length;n++)t(n);return e.appendChild(o),e}()),e.appendChild(function(){for(var e=document.createElement("tbody"),t=a.columnValues,n=0;n<t.length;n++){for(var c=document.createElement("tr"),o=0;o<t[n].length;o++){var r,i=t[n][o],l=document.createElement("td");l.appendChild(document.createTextNode(i)),l.setAttribute("title",i),c.appendChild(l),"function"==typeof(null==(r=a.postProcess)?void 0:r.column)&&a.postProcess.column(l)}e.appendChild(c)}return e}()),l.options.enableCheckbox)for(var t=e.querySelectorAll("tr"),n=0;n<t.length;n++){var c=r(),o=void 0;0===n?(o=document.createElement("th"),c.addEventListener("click",function(){d(t)})):(o=document.createElement("td"),c.addEventListener("click",function(e){d(t,e)}.bind(null,n),!1)),o.appendChild(c),t[n].insertBefore(o,t[n].firstChild)}return e}();"function"==typeof(null==(e=a.postProcess)?void 0:e.table)&&a.postProcess.table(t);var n=i.querySelector(".tidy-table table");n?n.parentNode.replaceChild(t,n):(l.options.enableMenu&&i.appendChild(function(e){var t,n=document.createElement("select");n.classList.add(e),n.addEventListener("change",function(){var e=a.menuOptions[this.value][1].callback;"function"==typeof e&&e(function(){for(var e=i.querySelectorAll("tbody > tr"),t=[],n=0;n<e.length;n++){var c=e[n].childNodes;if(c[0].firstChild.checked){for(var o=[],r=1;r<c.length;r++)o[r-1]=c[r].textContent;t.push(o)}}return t}()),this.value=0});for(var c=0;c<a.menuOptions.length;c++){var o=document.createElement("option");o.text=a.menuOptions[c][0],o.value=c,n.appendChild(o)}"function"==typeof(null==(t=a.postProcess)?void 0:t.menu)&&a.postProcess.menu(n);return n}("options")),i.classList.add("tidy-table"),i.appendChild(t)),c.responsive&&i.classList.add("responsive")}function r(){var e=document.createElement("input");return e.setAttribute("type","checkbox"),e}function d(e,t){for(var n,c=0;c<e.length;c++){var o=e[c],r=o.querySelector("input[type=checkbox]");if(t){if(0===c)continue;!0===r.checked?(o.classList.replace("check-off","check-on")||o.classList.add("check-on"),r.checked=!0):(o.classList.replace("check-on","check-off"),r.checked=!1)}else{if(0===c){n=r.checked;continue}n?(o.classList.replace("check-off","check-on")||o.classList.add("check-on"),r.checked=!0):(o.classList.replace("check-on","check-off"),r.checked=!1)}}}function u(e,t){return t<e?1:e<t?-1:0}!function(){l.options=Object.assign(c,n);var e=a.columnTitles,t=a.columnValues;if(!e.length||!t.length)throw new Error("Failed to initialize (missing settings)");s()}()}window.tidyTable=function(e,t,n){return new TidyTable(e,t,n)},"undefined"!=typeof module&&module.exports&&(module.exports=TidyTable);
1
+ "use strict";function TidyTable(i,a,n){void 0===n&&(n={});var l=this,c={enableCheckbox:!1,enableMenu:!1,reverseSortDir:!1,responsive:!1};function s(){var e,t=function(){var e=document.createElement("table");if(e.appendChild(function(){for(var e=document.createElement("thead"),o=document.createElement("tr"),r=a.columnTitles,i=l.sortOrder,t=function(t){var e,n=r[t],c=document.createElement("th");c.appendChild(document.createTextNode(n)),c.setAttribute("title",n),o.appendChild(c),l.selected===t&&(i=l.options.reverseSortDir?"desc"!==i&&i?(e="arrow-up","desc"):(e="arrow-down","asc"):"asc"!==i&&i?(e="arrow-up","asc"):(e="arrow-up","desc"),c.classList.add(e));c.addEventListener("click",function(e){l.sortOrder=l.selected===t?i:"asc",function(o,e){var r=a.sortByPattern;"function"!=typeof r&&(r=function(e){return null==e?void 0:e.replace(/\$|%|#/g,"")});var i="desc"===e?-1:1;a.columnValues.sort(function(e,t){var n=r(e[o]),c=r(t[o]);return isNaN(n)?[i*u(n,c)]>[i*u(c,n)]?-1:1:[i*function(e,t){return t-e}(n,c)]})}(e,i),l.selected=e,s()}.bind(null,t),!1)},n=0;n<r.length;n++)t(n);return e.appendChild(o),e}()),e.appendChild(function(){for(var e=document.createElement("tbody"),t=a.columnValues,n=0;n<t.length;n++){for(var c=document.createElement("tr"),o=0;o<t[n].length;o++){var r,i=t[n][o],l=document.createElement("td");l.appendChild(document.createTextNode(i)),l.setAttribute("title",i),c.appendChild(l),"function"==typeof(null==(r=a.postProcess)?void 0:r.column)&&a.postProcess.column(l)}e.appendChild(c)}return e}()),l.options.enableCheckbox)for(var t=e.querySelectorAll("tr"),n=0;n<t.length;n++){var c=r(),o=void 0;0===n?(o=document.createElement("th"),c.addEventListener("click",function(){d(t)})):(o=document.createElement("td"),c.addEventListener("click",function(e){d(t,e)}.bind(null,n),!1)),o.appendChild(c),t[n].insertBefore(o,t[n].firstChild)}return e}();"function"==typeof(null==(e=a.postProcess)?void 0:e.table)&&a.postProcess.table(t);var n=i.querySelector(".tidy-table table");n?n.parentNode.replaceChild(t,n):(l.options.enableMenu&&i.appendChild(function(e){var t,n=document.createElement("select");n.classList.add(e),n.addEventListener("change",function(){var e=a.menuOptions[this.value][1].callback;"function"==typeof e&&e(function(){for(var e=i.querySelectorAll("tbody > tr"),t=[],n=0;n<e.length;n++){var c=e[n].childNodes;if(c[0].firstChild.checked){for(var o=[],r=1;r<c.length;r++)o[r-1]=c[r].textContent;t.push(o)}}return t}()),this.value=0});for(var c=0;c<a.menuOptions.length;c++){var o=document.createElement("option");o.text=a.menuOptions[c][0],o.value=c,n.appendChild(o)}"function"==typeof(null==(t=a.postProcess)?void 0:t.menu)&&a.postProcess.menu(n);return n}("options")),i.classList.add("tidy-table"),i.appendChild(t)),c.responsive&&i.classList.add("responsive")}function r(){var e=document.createElement("input");return e.setAttribute("type","checkbox"),e}function d(e,t){for(var n,c=0;c<e.length;c++){var o=e[c],r=o.querySelector("input[type=checkbox]");if(t){if(0===c)continue;!0===r.checked?(o.classList.replace("check-off","check-on")||o.classList.add("check-on"),r.checked=!0):(o.classList.replace("check-on","check-off"),r.checked=!1)}else{if(0===c){n=r.checked;continue}n?(o.classList.replace("check-off","check-on")||o.classList.add("check-on"),r.checked=!0):(o.classList.replace("check-on","check-off"),r.checked=!1)}}}function u(e,t){return t<e?1:e<t?-1:0}return function(){l.options=Object.assign(c,n);var e=a.columnTitles,t=a.columnValues;if(!e.length||!t.length)throw new Error("Failed to initialize (missing settings)");s()}(),l}window.tidyTable=function(e,t,n){return new TidyTable(e,t,n)},"undefined"!=typeof module&&module.exports&&(module.exports=TidyTable);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tidy-table",
3
- "version": "4.0.1",
3
+ "version": "4.0.3",
4
4
  "description": "Create a HTML table that can be sorted, selected, and post-processed using a simple callback.",
5
5
  "main": "src/tidy-table.js",
6
6
  "scripts": {
@@ -9,6 +9,7 @@
9
9
  "sass": "sass src/tidy-table.scss dist/tidy-table.css",
10
10
  "minify-css": "node-minify --compressor clean-css --input 'dist/tidy-table.css' --output 'dist/tidy-table.min.css'",
11
11
  "minify-js": "node-minify --compressor uglify-js --input 'dist/tidy-table.js' --output 'dist/tidy-table.min.js'",
12
+ "prepack": "npm run build",
12
13
  "test": "wdio wdio.conf.js"
13
14
  },
14
15
  "repository": {
package/src/tidy-table.js CHANGED
@@ -388,6 +388,8 @@ function TidyTable(container, settings, options = {}) {
388
388
  function cmpInt(a, b) {
389
389
  return b - a;
390
390
  }
391
+
392
+ return self;
391
393
  }
392
394
 
393
395
  /**