@green-code-studio/objects-list 0.1.2 → 0.1.4

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.
@@ -6,9 +6,7 @@
6
6
  * or disable the default devtool with "devtool: false".
7
7
  * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
8
  */
9
- /******/ (() => { // webpackBootstrap
10
- /******/ "use strict";
11
- /******/ var __webpack_modules__ = ({
9
+ /******/ var __webpack_modules__ = ({
12
10
 
13
11
  /***/ "./node_modules/@green-code-studio/internationalization/i18nNode.js":
14
12
  /*!**************************************************************************!*\
@@ -80,6 +78,16 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
80
78
 
81
79
  /***/ }),
82
80
 
81
+ /***/ "./node_modules/fast-creator/dist/entry.js":
82
+ /*!*************************************************!*\
83
+ !*** ./node_modules/fast-creator/dist/entry.js ***!
84
+ \*************************************************/
85
+ /***/ ((module) => {
86
+
87
+ eval("\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\r\n *\r\n * @param attributes\r\n * @param documentObject\r\n * @returns {HTMLElement}\r\n */\nfunction createFromDefinition() {\n var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var documentObject = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!documentObject) documentObject = document;\n var element = documentObject.createElement(attributes.tagName || 'div');\n repairClasses(attributes);\n\n for (var attrName in attributes) {\n if (attrName === 'className') {\n element.className = attributes[attrName];\n } else if (attrName === 'classList') {\n var _iterator = _createForOfIteratorHelper(attributes.classList),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var x = _step.value;\n element.classList.add(x);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else if (attrName === 'text') {\n element.textContent = attributes.text;\n } else if (attrName === 'html') {\n element.innerHTML = attributes.html;\n } else if (attrName === 'data') {\n Object.assign(element.dataset, attributes.data);\n } else if (attrName === 'children') {\n attributes.children.forEach(function (x) {\n return element.appendChild(x instanceof Node ? x : create(x, {}, documentObject));\n });\n } else if (attrName.startsWith('on')) {\n element[attrName] = attributes[attrName];\n } else if (attrName.startsWith('style')) {\n if (_typeof(attributes[attrName]) == \"object\") {\n for (var styleName in attributes[attrName]) {\n element.style.setProperty(styleName, attributes[attrName][styleName]);\n }\n } else if (attributes[attrName] !== false) {\n element.setAttribute(attrName, attributes[attrName]);\n }\n } else if (attrName === 'tagName') {//nothing\n } else {\n if (attributes[attrName] === true) element.setAttribute(attrName, attrName);else if (attributes[attrName] !== false) element.setAttribute(attrName, attributes[attrName]);\n }\n }\n\n return element;\n}\n\nfunction repairClasses(obj) {\n if (obj.className) {\n if (!obj.classList) obj.classList = [];\n obj.classList = [].concat(_toConsumableArray(obj.classList), _toConsumableArray(obj.className.split(' ')));\n delete obj.className;\n }\n}\n/**\r\n *\r\n * @param {string} selector\r\n * $returns {object}\r\n */\n\n\nfunction parseSelector(selector) {\n selector = (selector + \"\").trim();\n var position = 0;\n\n function parseElement() {\n var ret = {};\n var canBeTagname = true;\n\n while (position < selector.length) {\n var _char = selector[position];\n position++;\n\n if (_char === '#') {\n ret.id = parseText();\n } else if (_char === '.') {\n if (!ret.classList) ret.classList = [];\n ret.classList.push(parseText());\n } else if (_char === '[') {\n var attrName = parseText(['=', ']']);\n skipWhitespace();\n\n if (selector[position] == '=') {\n position++;\n skipWhitespace();\n if (selector[position] != '\"') throw new Error(\"Syntax error in position \" + position);\n position++;\n var value = parseAttributeValue();\n skipWhitespace();\n if (selector[position] != '\"') throw new Error(\"Syntax error in position \" + position);\n position++;\n skipWhitespace();\n if (selector[position] != ']') throw new Error(\"Syntax error in position \" + position);\n position++;\n ret[attrName] = value;\n } else if (selector[position] == ']') {\n position++;\n ret[attrName] = true;\n } else {\n throw new Error(\"Syntax error in position \" + position);\n }\n } else if (/\\s/.test(_char)) {\n while (position < selector.length && /\\s/.test(selector[position])) {\n position++;\n skipWhitespace();\n }\n\n ret.children = [parseElement()];\n } else if (canBeTagname) {\n ret.tagName = _char + parseText();\n } else {\n throw new Error(\"Syntax error in position \" + position);\n }\n\n canBeTagname = false;\n }\n\n return ret;\n }\n\n function parseText() {\n var escape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['.', '#', ',', '['];\n var text = '';\n\n while (position < selector.length) {\n var _char2 = selector[position];\n\n if (/\\s/.test(_char2) || escape.includes(_char2)) {\n return text;\n } else {\n text += _char2;\n position++;\n }\n }\n\n return text;\n }\n\n function parseAttributeValue() {\n var text = '';\n\n while (position < selector.length) {\n var _char3 = selector[position];\n\n if (_char3 == '\"') {\n return text;\n } else {\n text += _char3;\n position++;\n }\n }\n\n return text;\n }\n\n function skipWhitespace() {\n while (position < selector.length) {\n var _char4 = selector[position];\n\n if (!/\\s/.test(_char4)) {\n return;\n } else {\n position++;\n }\n }\n }\n\n if (selector === \"\") return {};else return parseElement();\n}\n/**\r\n *\r\n * @param {string} selector\r\n * @param {object} attributes\r\n * @param documentObject\r\n * @returns {HTMLElement}\r\n */\n\n\nfunction create() {\n var definition = {};\n var documentObject = null;\n\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n params[_key] = arguments[_key];\n }\n\n if (typeof params[0] == \"string\") definition = mergeObjects(definition, parseSelector(params.splice(0, 1)[0]));\n if (_typeof(params[0]) == \"object\" && !(params[0] instanceof Node)) definition = mergeObjects(definition, params.splice(0, 1)[0]);\n\n for (var _i = 0, _params = params; _i < _params.length; _i++) {\n var param = _params[_i];\n\n if (param instanceof Document) {\n documentObject = param;\n } else if (param instanceof Node) {\n documentObject = param.ownerDocument;\n if (!definition.children) definition.children = [];\n definition.children.push(param);\n }\n }\n\n return createFromDefinition(definition, documentObject);\n}\n\nfunction mergeObjects(a, b) {\n repairClasses(a);\n repairClasses(b);\n\n var ret = _objectSpread({}, a, {}, b);\n\n if (a.data && b.data) {\n ret.data = _objectSpread({}, a.data, {}, b.data);\n }\n\n if (a.children && b.children) {\n ret.children = [].concat(_toConsumableArray(a.children), _toConsumableArray(b.children));\n }\n\n if (a.classList && b.classList) {\n ret.classList = [].concat(_toConsumableArray(a.classList), _toConsumableArray(b.classList));\n }\n\n return ret;\n}\n\nmodule.exports = {\n createFromDefinition: createFromDefinition,\n parseSelector: parseSelector,\n create: create,\n mergeObjects: mergeObjects,\n \"default\": create\n};\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./node_modules/fast-creator/dist/entry.js?");
88
+
89
+ /***/ }),
90
+
83
91
  /***/ "./src/ConfigPopup.mpts":
84
92
  /*!******************************!*\
85
93
  !*** ./src/ConfigPopup.mpts ***!
@@ -176,7 +184,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
176
184
  \**************************/
177
185
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
178
186
 
179
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TableView: () => (/* binding */ TableView)\n/* harmony export */ });\n/* harmony import */ var _abstractView_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./abstractView.js */ \"./src/abstractView.js\");\n/* harmony import */ var _i18n_xml__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./i18n.xml */ \"./src/i18n.xml\");\n//import {ContextMenu} from \"../contextMenu\";\r\nclass ContextMenu {}//todo\r\n\r\n\r\n\r\nclass TableView extends _abstractView_js__WEBPACK_IMPORTED_MODULE_0__.AbstractView {\r\n constructor(objectsList) {\r\n super();\r\n this.objectsList = objectsList;\r\n this.init();\r\n window.dbgTable = this;\r\n }\r\n\r\n init() {\r\n this.head = create('.head');\r\n this.append(this.head);\r\n this.refreshHeader();\r\n this.body = this.addChild('.bodyContainer').addChild('.body');\r\n this.setColumnsWidths();\r\n addEventListener('resize', this.setColumnsWidths.bind(this))\r\n addEventListener('copy', this.onCopy.bind(this));\r\n this.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n refreshHeader() {\r\n while (this.head.firstChild) this.head.firstChild.remove();\r\n\r\n this.head.addChild('.column.icon')\r\n for (let column of this.objectsList.visibleColumns) {\r\n let node = this.head.addChild('.column')\r\n node.addChild('span.name', {text: column.name});\r\n if (column.sortName) {\r\n node.classList.add('ableToSort');\r\n node.dataset.sortName = column.sortName\r\n node.onclick = () => {\r\n let sortName = column.sortName || x.dataset.value;\r\n if (this.objectsList.sort && this.objectsList.sort.col === column.sortName) {\r\n this.objectsList.sort.desc = !this.objectsList.sort.desc;\r\n } else {\r\n this.objectsList.sort = {col: column.sortName, desc: false};\r\n }\r\n if (!this.objectsList.infiniteScrollEnabled) {\r\n this.objectsList.start = 0;\r\n }\r\n this.objectsList.refresh();\r\n }\r\n }\r\n }\r\n this.head.addChild('.column.actions')\r\n }\r\n\r\n loadData(data, start, limit, infiniteScrollEnabled) {\r\n this.refreshSortIndicators();\r\n super.loadData(data, start, limit, infiniteScrollEnabled)\r\n this.setColumnsWidths();\r\n }\r\n\r\n get rowHeight() {\r\n return parseFloat(window.getComputedStyle(this).getPropertyValue('--rowHeight') ?? 31);\r\n }\r\n\r\n generateRow(data) {\r\n let tr = this.body.querySelector(`.tr[data-row=\"${data.id}\"]`);\r\n if (!tr) {\r\n tr = document.create('.tr');\r\n tr.draggable = true;\r\n }\r\n tr.classList.toggle('selected', this.objectsList.selected.has(data.id))\r\n this.fillRowContent(tr, data);\r\n return tr;\r\n }\r\n\r\n fillRowContent(tr, data) {\r\n tr.lastData = data;\r\n tr.children.removeAll();\r\n tr.addChild('.td.icon', {className: this.objectsList.icon});\r\n for (let column of this.objectsList.visibleColumns) {\r\n let td = tr.addChild('.td');\r\n if (this.multiEdit && column.dataName) {\r\n tr.dataset.id = data.id;\r\n td.addChild('input', {\r\n data: {name: column.dataName},\r\n value: data[column.dataName],\r\n onclick: e => e.stopPropagation(),\r\n onchange: () => this.multiEditChanged(tr)\r\n });\r\n } else {\r\n td.append(column.content?.call(column, data) || data[column.dataName] || '');\r\n }\r\n }\r\n let actionsTd = tr.addChild('.td.actions');\r\n let actions = this.objectsList.generateActions([data], 'row');\r\n if (this.multiEdit && data.__isMultirowEdited) {\r\n actions = [\r\n {\r\n name: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_1__.t)(\"objectList.saveRow\"),\r\n icon: 'icon-save',\r\n command: () => {\r\n this.multiEditChanged(tr, true)\r\n }\r\n }\r\n ]\r\n }\r\n for (let action of actions) {\r\n let actionButton = actionsTd.addChild(action.href ? 'a.button' : 'button', {\r\n title: action.name\r\n });\r\n actionButton.classList.add('action-' + (action.action ?? 'view'));\r\n\r\n if (action.href) {\r\n actionButton.href = action.href;\r\n }\r\n if (action.command) {\r\n actionButton.onclick = action.command;\r\n }\r\n if (action.icon) {\r\n actionButton.addChild('span', {classList: [action.icon]});\r\n } else {\r\n actionButton.textContent = action.name;\r\n }\r\n }\r\n\r\n\r\n tr.dataset.row = data.id;\r\n tr.oncontextmenu = this.contextMenu.bind(this, tr);\r\n tr.onclick = this.trOnClick.bind(this, data);\r\n tr.ondblclick = this.trOnDblClick.bind(this, data, tr);\r\n tr.onkeydown = this.trOnKeyDown.bind(this, data, tr);\r\n tr.ondragstart = this.trOnDragStart.bind(this, data, tr);\r\n }\r\n\r\n setColumnsWidths() {\r\n const widths = this.calculateColumnsWidths();\r\n for (let tr of this.body.children) {\r\n for (let i = 0; i < widths.length; i++) {\r\n tr.children[i].style.width = widths[i] + 'px';\r\n }\r\n }\r\n let sum = 0;\r\n for (let i = 0; i < widths.length; i++) {\r\n let node = this.head.children[i];\r\n if (node) {\r\n if (i + 1 < widths.length)\r\n node.style.width = widths[i] + 1 + 'px';\r\n else\r\n node.style.width = widths[i] + 'px';\r\n node.style.left = sum + 'px';\r\n }\r\n sum += widths[i];\r\n }\r\n }\r\n\r\n calculateColumnsWidths() {\r\n let needed = [{base: 30, grow: 0}];\r\n\r\n for (let column of this.objectsList.visibleColumns) {\r\n needed.push({base: column.width || 10, grow: typeof (column.widthGrow) == \"number\" ? column.widthGrow : 1});\r\n }\r\n let actionWidth = Math.ceil(Array.from(this.querySelectorAll('.td.actions')).map(x => {\r\n if (x.lastElementChild)\r\n return x.lastElementChild.getBoundingClientRect().right - x.getBoundingClientRect().left + parseFloat(getComputedStyle(x).paddingRight);\r\n else\r\n return 0;\r\n }).max());\r\n needed.push({base: actionWidth, grow: 0});\r\n let availableToGrow = this.clientWidth - needed.sum(x => x.base);\r\n let sumGrow = needed.sum(x => x.grow);\r\n if (availableToGrow > 0 && sumGrow > 0) {\r\n return needed.map(x => x.base + x.grow / sumGrow * availableToGrow);\r\n } else {\r\n return needed.map(x => x.base);\r\n }\r\n }\r\n\r\n refreshSortIndicators() {\r\n this.head.querySelectorAll('[data-order]').forEach(x => delete x.dataset.order);\r\n if (this.objectsList.sort)\r\n this.head.querySelectorAll(`[data-sort-name=\"${this.objectsList.sort.col}\"]`).forEach(x => x.dataset.order = this.objectsList.sort.desc ? 'desc' : 'asc');\r\n }\r\n\r\n contextMenu(tr, event) {\r\n event.stopPropagation();\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n const rows = this.objectsList.getSelectedData();\r\n let actions = this.objectsList.generateActions(rows, 'contextMenu');\r\n let elements = actions.map(action => ({\r\n text: action.name,\r\n icon: action.icon,\r\n class: action.action ? 'action-' + action.action : '',\r\n onclick: action.command || (() => this.objectsList.gotoUrl(action.href))\r\n }));\r\n elements.push({\r\n text: 'copy',\r\n icon: 'icon-copy',\r\n onclick: () => {\r\n this.forceCopy(rows);\r\n }\r\n })\r\n ContextMenu.openContextMenu(event, elements);\r\n }\r\n\r\n refreshSelectedClasses() {\r\n for (const tr of this.body.children) {\r\n tr.classList.toggle('selected', this.objectsList.selected.has(tr.dataset.row));\r\n tr.classList.toggle('selectedMain', this.objectsList.selectedMain == tr.dataset.row);\r\n if (this.objectsList.selectedMain == tr.dataset.row) {\r\n tr.tabIndex = 1;\r\n tr.focus();\r\n getSelection().selectAllChildren(tr)\r\n } else {\r\n tr.tabIndex = -1;\r\n }\r\n }\r\n }\r\n\r\n\r\n trOnClick(row, e) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n console.log('click')\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n\r\n if (e.shiftKey) {\r\n const mainIndex = rowsIds.indexOf(this.objectsList.selectedMain);\r\n const clickedIndex = rowsIds.indexOf(row.id);\r\n if (clickedIndex >= 0 && mainIndex >= 0)\r\n rowsIds.slice(Math.min(mainIndex, clickedIndex), Math.max(mainIndex, clickedIndex) + 1).forEach(x => this.objectsList.selected.add(x));\r\n } else {\r\n if (this.objectsList.selected.has(row.id))\r\n this.objectsList.selected.delete(row.id);\r\n else\r\n this.objectsList.selected.add(row.id);\r\n\r\n this.objectsList.selectedMain = row.id;\r\n }\r\n\r\n this.refreshSelectedClasses();\r\n }\r\n\r\n trOnDblClick(row, tr, e) {\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dblClick').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n }\r\n\r\n selectRange(start, end) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let startIndex = rowsIds.indexOf(start);\r\n let endIndex = rowsIds.indexOf(end);\r\n if (endIndex < startIndex) {\r\n let tmp = startIndex;\r\n startIndex = endIndex;\r\n endIndex = tmp;\r\n }\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n this.objectsList.selected.add(rowsIds[i]);\r\n }\r\n }\r\n\r\n trOnKeyDown(row, tr, e) {\r\n console.log('trOnKeyDown')\r\n if (e.key === 'Enter') {\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'enter').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let index = rowsIds.indexOf(this.objectsList.selectedMain);\r\n if (e.key === 'ArrowDown') {\r\n if (index < rowsIds.length) index++;\r\n else index = rowsIds.length - 1;\r\n } else {\r\n if (index > 0) index--;\r\n }\r\n const id = rowsIds[index];\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n if (e.shiftKey) {\r\n if (!this.objectsList.selectedShiftStart) {\r\n this.objectsList.selectedShiftStart = this.objectsList.selectedMain;\r\n }\r\n this.selectRange(this.objectsList.selectedShiftStart, id)\r\n } else {\r\n this.objectsList.selectedShiftStart = null;\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.add(id);\r\n }\r\n }\r\n this.objectsList.selectedMain = id;\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === ' ') {\r\n if (this.objectsList.selected.has(this.objectsList.selectedMain))\r\n this.objectsList.selected.delete(this.objectsList.selectedMain);\r\n else\r\n this.objectsList.selected.add(this.objectsList.selectedMain);\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === 'a') {\r\n if (e.ctrlKey)\r\n this.objectsList.selected.selectAll();\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n onCopy(e) {\r\n if (this.copyForced) {\r\n this.fillDataTransfer(e.clipboardData, this.copyForced);\r\n e.preventDefault();\r\n } else if (document.querySelector(':focus')?.findParent(x => x === this)) {\r\n this.fillDataTransfer(e.clipboardData, this.objectsList.selected);\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n trOnDragStart(row, oryginalTr, e) {\r\n if (!this.objectsList.selected.has(row.id)) {\r\n this.objectsList.selected.clear()\r\n this.objectsList.selected.add(row.id)\r\n this.refreshSelectedClasses();\r\n }\r\n this.fillDataTransfer(e.dataTransfer, this.objectsList.selected);\r\n }\r\n\r\n fillDataTransfer(dataTransfer, ids) {\r\n const trs = Array.from(this.body.children).filter(tr => ids.has(tr.dataset.row));\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dataTransfer').find(x => x.main);\r\n if (action && action.href) {\r\n dataTransfer.setData('text/uri-list', new URL(action.href, document.baseURI));\r\n }\r\n if (action && action.hrefArray) {\r\n dataTransfer.setData('text/uri-list', action.hrefArray.map(x => new URL(x, document.baseURI)).map(x => x.toString()).join(\"\\r\\n#\\r\\n\"));\r\n }\r\n dataTransfer.setData('text/html', this.generateTableHtml(trs));\r\n dataTransfer.setData('text/plain', this.generateTableTextPlain(trs));\r\n\r\n }\r\n\r\n generateTableHtml(trs) {\r\n const thead = '<thead><tr>' + Array.from(this.head.querySelectorAll('.column')).map(x => '<th>' + x.innerHTML + '</th>').join('') + '</tr></thead>';\r\n const tbody = '<tbody>' + trs.map(tr => {\r\n return '<tr>' + Array.from(tr.children).slice(1, -1).map(td => {\r\n return '<td>' + td.innerHTML + '</td>';\r\n }).join('') + '</tr>';\r\n }).join('') + '</tbody>'\r\n return '<table>' + thead + tbody + '</table>';\r\n }\r\n\r\n generateTableTextPlain(trs) {\r\n const head = Array.from(this.head.querySelectorAll('.column')).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")\r\n const body = trs.map(tr => Array.from(tr.children).slice(1).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")).join(\"\\r\\n\")\r\n return head + \"\\r\\n\" + body;\r\n }\r\n\r\n calcMaxVisibleItems(height) {\r\n return Math.floor((height - this.head.clientHeight) / this.rowHeight);\r\n }\r\n\r\n forceCopy(rows) {\r\n this.copyForced = new Set(rows.map(x => x.id));\r\n document.execCommand(\"copy\");\r\n setTimeout(() => this.copyForced = null, 100);\r\n }\r\n\r\n startMultiEdit() {\r\n this.multiEdit = true;\r\n }\r\n\r\n multiEditChanged(tr, save = false) {\r\n let data = [...tr.querySelectorAll('[data-name]')].map(x => [x.dataset.name, x.value]);\r\n let dataObj = Object.fromEntries(data);\r\n this.objectsList.multiEditChanged(tr.dataset.id, dataObj, save);\r\n this.fillRowContent(tr, {...tr.lastData, ...dataObj, __isMultirowEdited: true});\r\n this.setColumnsWidths();\r\n }\r\n}\r\n\r\ncustomElements.define('table-view', TableView);\r\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/tableView.js?");
187
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TableView: () => (/* binding */ TableView)\n/* harmony export */ });\n/* harmony import */ var fast_creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-creator */ \"./node_modules/fast-creator/dist/entry.js\");\n/* harmony import */ var _abstractView_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./abstractView.js */ \"./src/abstractView.js\");\n/* harmony import */ var _i18n_xml__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./i18n.xml */ \"./src/i18n.xml\");\n//import {ContextMenu} from \"../contextMenu\";\r\n\r\n\r\nclass ContextMenu {\r\n}//todo\r\n\r\n\r\n\r\nclass TableView extends _abstractView_js__WEBPACK_IMPORTED_MODULE_1__.AbstractView {\r\n constructor(objectsList) {\r\n super();\r\n this.objectsList = objectsList;\r\n this.init();\r\n window.dbgTable = this;\r\n }\r\n\r\n init() {\r\n this.head = (0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('.head');\r\n this.append(this.head);\r\n this.refreshHeader();\r\n this.body = (0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('.bodyContainer')\r\n this.body.append((0,fast_creator__WEBPACK_IMPORTED_MODULE_0__.create)('.body'));\r\n this.append(this.body);\r\n this.setColumnsWidths();\r\n addEventListener('resize', this.setColumnsWidths.bind(this))\r\n addEventListener('copy', this.onCopy.bind(this));\r\n this.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n refreshHeader() {\r\n while (this.head.firstChild) this.head.firstChild.remove();\r\n\r\n this.head.addChild('.column.icon')\r\n for (let column of this.objectsList.visibleColumns) {\r\n let node = this.head.addChild('.column')\r\n node.addChild('span.name', {text: column.name});\r\n if (column.sortName) {\r\n node.classList.add('ableToSort');\r\n node.dataset.sortName = column.sortName\r\n node.onclick = () => {\r\n let sortName = column.sortName || x.dataset.value;\r\n if (this.objectsList.sort && this.objectsList.sort.col === column.sortName) {\r\n this.objectsList.sort.desc = !this.objectsList.sort.desc;\r\n } else {\r\n this.objectsList.sort = {col: column.sortName, desc: false};\r\n }\r\n if (!this.objectsList.infiniteScrollEnabled) {\r\n this.objectsList.start = 0;\r\n }\r\n this.objectsList.refresh();\r\n }\r\n }\r\n }\r\n this.head.addChild('.column.actions')\r\n }\r\n\r\n loadData(data, start, limit, infiniteScrollEnabled) {\r\n this.refreshSortIndicators();\r\n super.loadData(data, start, limit, infiniteScrollEnabled)\r\n this.setColumnsWidths();\r\n }\r\n\r\n get rowHeight() {\r\n return parseFloat(window.getComputedStyle(this).getPropertyValue('--rowHeight') ?? 31);\r\n }\r\n\r\n generateRow(data) {\r\n let tr = this.body.querySelector(`.tr[data-row=\"${data.id}\"]`);\r\n if (!tr) {\r\n tr = document.create('.tr');\r\n tr.draggable = true;\r\n }\r\n tr.classList.toggle('selected', this.objectsList.selected.has(data.id))\r\n this.fillRowContent(tr, data);\r\n return tr;\r\n }\r\n\r\n fillRowContent(tr, data) {\r\n tr.lastData = data;\r\n tr.children.removeAll();\r\n tr.addChild('.td.icon', {className: this.objectsList.icon});\r\n for (let column of this.objectsList.visibleColumns) {\r\n let td = tr.addChild('.td');\r\n if (this.multiEdit && column.dataName) {\r\n tr.dataset.id = data.id;\r\n td.addChild('input', {\r\n data: {name: column.dataName},\r\n value: data[column.dataName],\r\n onclick: e => e.stopPropagation(),\r\n onchange: () => this.multiEditChanged(tr)\r\n });\r\n } else {\r\n td.append(column.content?.call(column, data) || data[column.dataName] || '');\r\n }\r\n }\r\n let actionsTd = tr.addChild('.td.actions');\r\n let actions = this.objectsList.generateActions([data], 'row');\r\n if (this.multiEdit && data.__isMultirowEdited) {\r\n actions = [\r\n {\r\n name: (0,_i18n_xml__WEBPACK_IMPORTED_MODULE_2__.t)(\"objectList.saveRow\"),\r\n icon: 'icon-save',\r\n command: () => {\r\n this.multiEditChanged(tr, true)\r\n }\r\n }\r\n ]\r\n }\r\n for (let action of actions) {\r\n let actionButton = actionsTd.addChild(action.href ? 'a.button' : 'button', {\r\n title: action.name\r\n });\r\n actionButton.classList.add('action-' + (action.action ?? 'view'));\r\n\r\n if (action.href) {\r\n actionButton.href = action.href;\r\n }\r\n if (action.command) {\r\n actionButton.onclick = action.command;\r\n }\r\n if (action.icon) {\r\n actionButton.addChild('span', {classList: [action.icon]});\r\n } else {\r\n actionButton.textContent = action.name;\r\n }\r\n }\r\n\r\n\r\n tr.dataset.row = data.id;\r\n tr.oncontextmenu = this.contextMenu.bind(this, tr);\r\n tr.onclick = this.trOnClick.bind(this, data);\r\n tr.ondblclick = this.trOnDblClick.bind(this, data, tr);\r\n tr.onkeydown = this.trOnKeyDown.bind(this, data, tr);\r\n tr.ondragstart = this.trOnDragStart.bind(this, data, tr);\r\n }\r\n\r\n setColumnsWidths() {\r\n const widths = this.calculateColumnsWidths();\r\n for (let tr of this.body.children) {\r\n for (let i = 0; i < widths.length; i++) {\r\n tr.children[i].style.width = widths[i] + 'px';\r\n }\r\n }\r\n let sum = 0;\r\n for (let i = 0; i < widths.length; i++) {\r\n let node = this.head.children[i];\r\n if (node) {\r\n if (i + 1 < widths.length)\r\n node.style.width = widths[i] + 1 + 'px';\r\n else\r\n node.style.width = widths[i] + 'px';\r\n node.style.left = sum + 'px';\r\n }\r\n sum += widths[i];\r\n }\r\n }\r\n\r\n calculateColumnsWidths() {\r\n let needed = [{base: 30, grow: 0}];\r\n\r\n for (let column of this.objectsList.visibleColumns) {\r\n needed.push({base: column.width || 10, grow: typeof (column.widthGrow) == \"number\" ? column.widthGrow : 1});\r\n }\r\n let actionWidth = Math.ceil(Array.from(this.querySelectorAll('.td.actions')).map(x => {\r\n if (x.lastElementChild)\r\n return x.lastElementChild.getBoundingClientRect().right - x.getBoundingClientRect().left + parseFloat(getComputedStyle(x).paddingRight);\r\n else\r\n return 0;\r\n }).max());\r\n needed.push({base: actionWidth, grow: 0});\r\n let availableToGrow = this.clientWidth - needed.sum(x => x.base);\r\n let sumGrow = needed.sum(x => x.grow);\r\n if (availableToGrow > 0 && sumGrow > 0) {\r\n return needed.map(x => x.base + x.grow / sumGrow * availableToGrow);\r\n } else {\r\n return needed.map(x => x.base);\r\n }\r\n }\r\n\r\n refreshSortIndicators() {\r\n this.head.querySelectorAll('[data-order]').forEach(x => delete x.dataset.order);\r\n if (this.objectsList.sort)\r\n this.head.querySelectorAll(`[data-sort-name=\"${this.objectsList.sort.col}\"]`).forEach(x => x.dataset.order = this.objectsList.sort.desc ? 'desc' : 'asc');\r\n }\r\n\r\n contextMenu(tr, event) {\r\n event.stopPropagation();\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n const rows = this.objectsList.getSelectedData();\r\n let actions = this.objectsList.generateActions(rows, 'contextMenu');\r\n let elements = actions.map(action => ({\r\n text: action.name,\r\n icon: action.icon,\r\n class: action.action ? 'action-' + action.action : '',\r\n onclick: action.command || (() => this.objectsList.gotoUrl(action.href))\r\n }));\r\n elements.push({\r\n text: 'copy',\r\n icon: 'icon-copy',\r\n onclick: () => {\r\n this.forceCopy(rows);\r\n }\r\n })\r\n ContextMenu.openContextMenu(event, elements);\r\n }\r\n\r\n refreshSelectedClasses() {\r\n for (const tr of this.body.children) {\r\n tr.classList.toggle('selected', this.objectsList.selected.has(tr.dataset.row));\r\n tr.classList.toggle('selectedMain', this.objectsList.selectedMain == tr.dataset.row);\r\n if (this.objectsList.selectedMain == tr.dataset.row) {\r\n tr.tabIndex = 1;\r\n tr.focus();\r\n getSelection().selectAllChildren(tr)\r\n } else {\r\n tr.tabIndex = -1;\r\n }\r\n }\r\n }\r\n\r\n\r\n trOnClick(row, e) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n console.log('click')\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n\r\n if (e.shiftKey) {\r\n const mainIndex = rowsIds.indexOf(this.objectsList.selectedMain);\r\n const clickedIndex = rowsIds.indexOf(row.id);\r\n if (clickedIndex >= 0 && mainIndex >= 0)\r\n rowsIds.slice(Math.min(mainIndex, clickedIndex), Math.max(mainIndex, clickedIndex) + 1).forEach(x => this.objectsList.selected.add(x));\r\n } else {\r\n if (this.objectsList.selected.has(row.id))\r\n this.objectsList.selected.delete(row.id);\r\n else\r\n this.objectsList.selected.add(row.id);\r\n\r\n this.objectsList.selectedMain = row.id;\r\n }\r\n\r\n this.refreshSelectedClasses();\r\n }\r\n\r\n trOnDblClick(row, tr, e) {\r\n if (!this.objectsList.selected.has(tr.dataset.row)) {\r\n this.objectsList.selected.clear();\r\n this.objectsList.selected.add(tr.dataset.row)\r\n this.objectsList.selectedMain = tr.dataset.row;\r\n this.refreshSelectedClasses();\r\n }\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dblClick').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n }\r\n\r\n selectRange(start, end) {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let startIndex = rowsIds.indexOf(start);\r\n let endIndex = rowsIds.indexOf(end);\r\n if (endIndex < startIndex) {\r\n let tmp = startIndex;\r\n startIndex = endIndex;\r\n endIndex = tmp;\r\n }\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n this.objectsList.selected.add(rowsIds[i]);\r\n }\r\n }\r\n\r\n trOnKeyDown(row, tr, e) {\r\n console.log('trOnKeyDown')\r\n if (e.key === 'Enter') {\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'enter').find(x => x.main);\r\n if (action) {\r\n if (action.command) {\r\n action.command();\r\n } else if (action.href) {\r\n this.objectsList.gotoUrl(action.href)\r\n }\r\n }\r\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\r\n const rowsIds = this.objectsList.currentRows.map(x => x.id);\r\n let index = rowsIds.indexOf(this.objectsList.selectedMain);\r\n if (e.key === 'ArrowDown') {\r\n if (index < rowsIds.length) index++;\r\n else index = rowsIds.length - 1;\r\n } else {\r\n if (index > 0) index--;\r\n }\r\n const id = rowsIds[index];\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.clear();\r\n }\r\n if (e.shiftKey) {\r\n if (!this.objectsList.selectedShiftStart) {\r\n this.objectsList.selectedShiftStart = this.objectsList.selectedMain;\r\n }\r\n this.selectRange(this.objectsList.selectedShiftStart, id)\r\n } else {\r\n this.objectsList.selectedShiftStart = null;\r\n if (!e.ctrlKey) {\r\n this.objectsList.selected.add(id);\r\n }\r\n }\r\n this.objectsList.selectedMain = id;\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === ' ') {\r\n if (this.objectsList.selected.has(this.objectsList.selectedMain))\r\n this.objectsList.selected.delete(this.objectsList.selectedMain);\r\n else\r\n this.objectsList.selected.add(this.objectsList.selectedMain);\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n } else if (e.key === 'a') {\r\n if (e.ctrlKey)\r\n this.objectsList.selected.selectAll();\r\n\r\n this.refreshSelectedClasses();\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n onCopy(e) {\r\n if (this.copyForced) {\r\n this.fillDataTransfer(e.clipboardData, this.copyForced);\r\n e.preventDefault();\r\n } else if (document.querySelector(':focus')?.findParent(x => x === this)) {\r\n this.fillDataTransfer(e.clipboardData, this.objectsList.selected);\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n trOnDragStart(row, oryginalTr, e) {\r\n if (!this.objectsList.selected.has(row.id)) {\r\n this.objectsList.selected.clear()\r\n this.objectsList.selected.add(row.id)\r\n this.refreshSelectedClasses();\r\n }\r\n this.fillDataTransfer(e.dataTransfer, this.objectsList.selected);\r\n }\r\n\r\n fillDataTransfer(dataTransfer, ids) {\r\n const trs = Array.from(this.body.children).filter(tr => ids.has(tr.dataset.row));\r\n let action = this.objectsList.generateActions(this.objectsList.getSelectedData(), 'dataTransfer').find(x => x.main);\r\n if (action && action.href) {\r\n dataTransfer.setData('text/uri-list', new URL(action.href, document.baseURI));\r\n }\r\n if (action && action.hrefArray) {\r\n dataTransfer.setData('text/uri-list', action.hrefArray.map(x => new URL(x, document.baseURI)).map(x => x.toString()).join(\"\\r\\n#\\r\\n\"));\r\n }\r\n dataTransfer.setData('text/html', this.generateTableHtml(trs));\r\n dataTransfer.setData('text/plain', this.generateTableTextPlain(trs));\r\n\r\n }\r\n\r\n generateTableHtml(trs) {\r\n const thead = '<thead><tr>' + Array.from(this.head.querySelectorAll('.column')).map(x => '<th>' + x.innerHTML + '</th>').join('') + '</tr></thead>';\r\n const tbody = '<tbody>' + trs.map(tr => {\r\n return '<tr>' + Array.from(tr.children).slice(1, -1).map(td => {\r\n return '<td>' + td.innerHTML + '</td>';\r\n }).join('') + '</tr>';\r\n }).join('') + '</tbody>'\r\n return '<table>' + thead + tbody + '</table>';\r\n }\r\n\r\n generateTableTextPlain(trs) {\r\n const head = Array.from(this.head.querySelectorAll('.column')).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")\r\n const body = trs.map(tr => Array.from(tr.children).slice(1).map(x => x.textContent.replace(/\\r\\n/gm, ' ')).join(\"\\t\")).join(\"\\r\\n\")\r\n return head + \"\\r\\n\" + body;\r\n }\r\n\r\n calcMaxVisibleItems(height) {\r\n return Math.floor((height - this.head.clientHeight) / this.rowHeight);\r\n }\r\n\r\n forceCopy(rows) {\r\n this.copyForced = new Set(rows.map(x => x.id));\r\n document.execCommand(\"copy\");\r\n setTimeout(() => this.copyForced = null, 100);\r\n }\r\n\r\n startMultiEdit() {\r\n this.multiEdit = true;\r\n }\r\n\r\n multiEditChanged(tr, save = false) {\r\n let data = [...tr.querySelectorAll('[data-name]')].map(x => [x.dataset.name, x.value]);\r\n let dataObj = Object.fromEntries(data);\r\n this.objectsList.multiEditChanged(tr.dataset.id, dataObj, save);\r\n this.fillRowContent(tr, {...tr.lastData, ...dataObj, __isMultirowEdited: true});\r\n this.setColumnsWidths();\r\n }\r\n}\r\n\r\ncustomElements.define('table-view', TableView);\r\n\n\n//# sourceURL=webpack://@green-code-studio/objects-list/./src/tableView.js?");
180
188
 
181
189
  /***/ }),
182
190
 
@@ -190,67 +198,72 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
190
198
 
191
199
  /***/ })
192
200
 
193
- /******/ });
201
+ /******/ });
194
202
  /************************************************************************/
195
- /******/ // The module cache
196
- /******/ var __webpack_module_cache__ = {};
197
- /******/
198
- /******/ // The require function
199
- /******/ function __webpack_require__(moduleId) {
200
- /******/ // Check if module is in cache
201
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
202
- /******/ if (cachedModule !== undefined) {
203
- /******/ return cachedModule.exports;
204
- /******/ }
205
- /******/ // Create a new module (and put it into the cache)
206
- /******/ var module = __webpack_module_cache__[moduleId] = {
207
- /******/ // no module.id needed
208
- /******/ // no module.loaded needed
209
- /******/ exports: {}
210
- /******/ };
211
- /******/
212
- /******/ // Execute the module function
213
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
214
- /******/
215
- /******/ // Return the exports of the module
216
- /******/ return module.exports;
203
+ /******/ // The module cache
204
+ /******/ var __webpack_module_cache__ = {};
205
+ /******/
206
+ /******/ // The require function
207
+ /******/ function __webpack_require__(moduleId) {
208
+ /******/ // Check if module is in cache
209
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
210
+ /******/ if (cachedModule !== undefined) {
211
+ /******/ return cachedModule.exports;
217
212
  /******/ }
218
- /******/
213
+ /******/ // Create a new module (and put it into the cache)
214
+ /******/ var module = __webpack_module_cache__[moduleId] = {
215
+ /******/ // no module.id needed
216
+ /******/ // no module.loaded needed
217
+ /******/ exports: {}
218
+ /******/ };
219
+ /******/
220
+ /******/ // Execute the module function
221
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
222
+ /******/
223
+ /******/ // Return the exports of the module
224
+ /******/ return module.exports;
225
+ /******/ }
226
+ /******/
219
227
  /************************************************************************/
220
- /******/ /* webpack/runtime/define property getters */
221
- /******/ (() => {
222
- /******/ // define getter functions for harmony exports
223
- /******/ __webpack_require__.d = (exports, definition) => {
224
- /******/ for(var key in definition) {
225
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
226
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
227
- /******/ }
228
- /******/ }
229
- /******/ };
230
- /******/ })();
231
- /******/
232
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
233
- /******/ (() => {
234
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
235
- /******/ })();
236
- /******/
237
- /******/ /* webpack/runtime/make namespace object */
238
- /******/ (() => {
239
- /******/ // define __esModule on exports
240
- /******/ __webpack_require__.r = (exports) => {
241
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
242
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
228
+ /******/ /* webpack/runtime/define property getters */
229
+ /******/ (() => {
230
+ /******/ // define getter functions for harmony exports
231
+ /******/ __webpack_require__.d = (exports, definition) => {
232
+ /******/ for(var key in definition) {
233
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
234
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
243
235
  /******/ }
244
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
245
- /******/ };
246
- /******/ })();
247
- /******/
236
+ /******/ }
237
+ /******/ };
238
+ /******/ })();
239
+ /******/
240
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
241
+ /******/ (() => {
242
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
243
+ /******/ })();
244
+ /******/
245
+ /******/ /* webpack/runtime/make namespace object */
246
+ /******/ (() => {
247
+ /******/ // define __esModule on exports
248
+ /******/ __webpack_require__.r = (exports) => {
249
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
250
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
251
+ /******/ }
252
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
253
+ /******/ };
254
+ /******/ })();
255
+ /******/
248
256
  /************************************************************************/
249
- /******/
250
- /******/ // startup
251
- /******/ // Load entry module and return exports
252
- /******/ // This entry module can't be inlined because the eval devtool is used.
253
- /******/ var __webpack_exports__ = __webpack_require__("./src/index.js");
254
- /******/
255
- /******/ })()
256
- ;
257
+ /******/
258
+ /******/ // startup
259
+ /******/ // Load entry module and return exports
260
+ /******/ // This entry module can't be inlined because the eval devtool is used.
261
+ /******/ var __webpack_exports__ = __webpack_require__("./src/index.js");
262
+ /******/ var __webpack_exports__AbstractView = __webpack_exports__.AbstractView;
263
+ /******/ var __webpack_exports__ColumnFilter = __webpack_exports__.ColumnFilter;
264
+ /******/ var __webpack_exports__ConfigPopup = __webpack_exports__.ConfigPopup;
265
+ /******/ var __webpack_exports__ListView = __webpack_exports__.ListView;
266
+ /******/ var __webpack_exports__ObjectsList = __webpack_exports__.ObjectsList;
267
+ /******/ var __webpack_exports__TableView = __webpack_exports__.TableView;
268
+ /******/ export { __webpack_exports__AbstractView as AbstractView, __webpack_exports__ColumnFilter as ColumnFilter, __webpack_exports__ConfigPopup as ConfigPopup, __webpack_exports__ListView as ListView, __webpack_exports__ObjectsList as ObjectsList, __webpack_exports__TableView as TableView };
269
+ /******/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@green-code-studio/objects-list",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "main": "src/index.js",
5
5
  "author": "Mateusz Krawczyk",
6
6
  "license": "MIT",
package/src/tableView.js CHANGED
@@ -1,5 +1,8 @@
1
1
  //import {ContextMenu} from "../contextMenu";
2
- class ContextMenu {}//todo
2
+ import {create} from "fast-creator";
3
+
4
+ class ContextMenu {
5
+ }//todo
3
6
  import {AbstractView} from "./abstractView.js";
4
7
  import {t} from "./i18n.xml";
5
8
 
@@ -15,7 +18,9 @@ export class TableView extends AbstractView {
15
18
  this.head = create('.head');
16
19
  this.append(this.head);
17
20
  this.refreshHeader();
18
- this.body = this.addChild('.bodyContainer').addChild('.body');
21
+ this.body = create('.bodyContainer')
22
+ this.body.append(create('.body'));
23
+ this.append(this.body);
19
24
  this.setColumnsWidths();
20
25
  addEventListener('resize', this.setColumnsWidths.bind(this))
21
26
  addEventListener('copy', this.onCopy.bind(this));
package/webpack.config.js CHANGED
@@ -10,6 +10,9 @@ export default {
10
10
  },
11
11
  output: {
12
12
  path: path.resolve(__dirname, './dist'),
13
+ library: {
14
+ type: "module",
15
+ },
13
16
  },
14
17
  module: {
15
18
  rules: [
@@ -22,5 +25,8 @@ export default {
22
25
  use: ["mpts-loader"]
23
26
  }
24
27
  ]
25
- }
28
+ },
29
+ experiments: {
30
+ outputModule: true,
31
+ },
26
32
  }