@revolist/revogrid 3.1.6 → 3.2.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.
Files changed (213) hide show
  1. package/dist/revo-grid/_baseIteratee-af30b221.js +2070 -0
  2. package/dist/{collection/global/global.js → revo-grid/app-globals-7e6866ba.js} +11 -2
  3. package/dist/{collection/components/data/columnService.js → revo-grid/columnService-91e552ba.js} +11 -6
  4. package/dist/revo-grid/consts-ef824e6f.js +46 -0
  5. package/dist/revo-grid/css-shim-5387c708.js +7 -0
  6. package/dist/revo-grid/data.store-3263fff9.js +557 -0
  7. package/dist/revo-grid/debounce-aaa4b4da.js +217 -0
  8. package/dist/revo-grid/dimension.helpers-a7944fc4.js +340 -0
  9. package/dist/revo-grid/dispatcher-891af82e.js +24 -0
  10. package/dist/{cjs/dom-c8b6d1a7.js → revo-grid/dom-21bd1807.js} +4 -3
  11. package/dist/revo-grid/each-0378e5a3.js +180 -0
  12. package/dist/{collection/plugins/filter/filter.button.js → revo-grid/filter.button-74c1cd9c.js} +16 -10
  13. package/dist/revo-grid/identity-c8c7d3d8.js +26 -0
  14. package/dist/revo-grid/index-8a604c17.js +3067 -0
  15. package/dist/revo-grid/index.esm.js +3 -0
  16. package/dist/revo-grid/isString-a51066b5.js +34 -0
  17. package/dist/revo-grid/isSymbol-e4b5dafe.js +247 -0
  18. package/dist/revo-grid/keyCodes.utils-bd06e3ba.js +299 -0
  19. package/dist/revo-grid/keys-70b7c240.js +561 -0
  20. package/dist/{collection/services/localScrollService.js → revo-grid/localScrollService-e9b73323.js} +8 -2
  21. package/dist/{esm/revo-grid_11.entry.js → revo-grid/lodash-a0ab4cdd.js} +13773 -24597
  22. package/dist/{cjs/resize-observer-8dc80084.js → revo-grid/resize-observer-00c48d78.js} +25 -14
  23. package/dist/revo-grid/revo-grid.entry.js +3484 -0
  24. package/dist/revo-grid/revo-grid.esm.js +133 -1
  25. package/dist/revo-grid/revogr-clipboard.entry.js +52 -1
  26. package/dist/revo-grid/revogr-data.entry.js +152 -0
  27. package/dist/revo-grid/revogr-edit.entry.js +105 -0
  28. package/dist/revo-grid/revogr-filter-panel.entry.js +277 -1
  29. package/dist/revo-grid/revogr-focus.entry.js +41 -0
  30. package/dist/revo-grid/revogr-header.entry.js +560 -0
  31. package/dist/revo-grid/revogr-order-editor.entry.js +175 -0
  32. package/dist/revo-grid/revogr-overlay-selection.entry.js +711 -0
  33. package/dist/revo-grid/revogr-row-headers.entry.js +73 -0
  34. package/dist/revo-grid/revogr-scroll-virtual.entry.js +114 -0
  35. package/dist/revo-grid/revogr-temp-range.entry.js +73 -0
  36. package/dist/revo-grid/revogr-viewport-scroll.entry.js +340 -0
  37. package/dist/revo-grid/selection.store.connector-2b613fd0.js +503 -0
  38. package/dist/{collection/components/overlay/selection.utils.js → revo-grid/selection.utils-a9932db6.js} +15 -9
  39. package/dist/revo-grid/shadow-css-602a09db.js +390 -0
  40. package/dist/{collection/themeManager/themeService.js → revo-grid/themeService-ddaaa364.js} +26 -6
  41. package/dist/revo-grid/toInteger-9e6cbfd2.js +107 -0
  42. package/dist/revo-grid/toNumber-913b0b72.js +105 -0
  43. package/dist/{collection/utils/utils.js → revo-grid/utils-2c3b3857.js} +13 -8
  44. package/dist/revo-grid/viewport.helpers-49d3f031.js +16 -0
  45. package/dist/{collection/store/viewPort/viewport.helpers.js → revo-grid/viewport.store-ffaaab6d.js} +135 -9
  46. package/dist/types/components/revo-grid/revo-grid.d.ts +6 -0
  47. package/dist/types/components.d.ts +110 -58
  48. package/dist/types/plugins/dispatcher.d.ts +10 -0
  49. package/dist/types/plugins/moveColumn/columnDragPlugin.d.ts +66 -0
  50. package/dist/types/plugins/moveColumn/columnOrderHandler.d.ts +12 -0
  51. package/dist/types/services/resizable.directive.d.ts +1 -1
  52. package/dist/types/stencil-public-runtime.d.ts +189 -186
  53. package/package.json +22 -20
  54. package/custom-element/index.js +0 -28972
  55. package/custom-element/resize-observer.js +0 -489
  56. package/dist/cjs/css-shim-e33df79c.js +0 -6
  57. package/dist/cjs/debounce-e9b040d9.js +0 -575
  58. package/dist/cjs/index-d3f67f2e.js +0 -1729
  59. package/dist/cjs/index.cjs.js +0 -2
  60. package/dist/cjs/loader.cjs.js +0 -35
  61. package/dist/cjs/revo-grid.cjs.js +0 -73
  62. package/dist/cjs/revo-grid_11.cjs.entry.js +0 -28056
  63. package/dist/cjs/revogr-clipboard.cjs.entry.js +0 -53
  64. package/dist/cjs/revogr-filter-panel.cjs.entry.js +0 -275
  65. package/dist/collection/collection-manifest.json +0 -25
  66. package/dist/collection/components/button/button.js +0 -4
  67. package/dist/collection/components/clipboard/revogr-clipboard.js +0 -121
  68. package/dist/collection/components/data/cellRenderer.js +0 -24
  69. package/dist/collection/components/data/revogr-data-style.css +0 -135
  70. package/dist/collection/components/data/revogr-data.js +0 -322
  71. package/dist/collection/components/data/rowRenderer.js +0 -6
  72. package/dist/collection/components/header/headerCellRenderer.js +0 -19
  73. package/dist/collection/components/header/headerRenderer.js +0 -45
  74. package/dist/collection/components/header/revogr-header-style.css +0 -198
  75. package/dist/collection/components/header/revogr-header.js +0 -297
  76. package/dist/collection/components/order/orderRenderer.js +0 -50
  77. package/dist/collection/components/order/revogr-order-editor.js +0 -358
  78. package/dist/collection/components/order/rowOrderService.js +0 -68
  79. package/dist/collection/components/overlay/autofill.service.js +0 -182
  80. package/dist/collection/components/overlay/clipboard.service.js +0 -39
  81. package/dist/collection/components/overlay/editors/edit.utils.js +0 -5
  82. package/dist/collection/components/overlay/editors/text.js +0 -35
  83. package/dist/collection/components/overlay/keyboard.service.js +0 -128
  84. package/dist/collection/components/overlay/revogr-edit-style.css +0 -86
  85. package/dist/collection/components/overlay/revogr-edit.js +0 -159
  86. package/dist/collection/components/overlay/revogr-overlay-selection.js +0 -726
  87. package/dist/collection/components/overlay/revogr-overlay-style.css +0 -98
  88. package/dist/collection/components/revo-grid/revo-grid-style.css +0 -527
  89. package/dist/collection/components/revo-grid/revo-grid.js +0 -2186
  90. package/dist/collection/components/revo-grid/viewport.helpers.js +0 -11
  91. package/dist/collection/components/revo-grid/viewport.interfaces.js +0 -1
  92. package/dist/collection/components/revo-grid/viewport.js +0 -18
  93. package/dist/collection/components/revo-grid/viewport.resize.service.js +0 -21
  94. package/dist/collection/components/revo-grid/viewport.scrolling.service.js +0 -60
  95. package/dist/collection/components/revo-grid/viewport.section.js +0 -28
  96. package/dist/collection/components/revo-grid/viewport.service.js +0 -209
  97. package/dist/collection/components/rowHeaders/revogr-row-headers.js +0 -210
  98. package/dist/collection/components/rowHeaders/row-header-render.js +0 -1
  99. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +0 -137
  100. package/dist/collection/components/scroll/revogr-viewport-scroll.js +0 -399
  101. package/dist/collection/components/scrollable/revogr-scroll-style.css +0 -104
  102. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +0 -253
  103. package/dist/collection/components/selection-focus/revogr-focus-style.css +0 -77
  104. package/dist/collection/components/selection-focus/revogr-focus.js +0 -103
  105. package/dist/collection/components/selection-temp-range/revogr-temp-range-style.css +0 -98
  106. package/dist/collection/components/selection-temp-range/revogr-temp-range.js +0 -138
  107. package/dist/collection/index.js +0 -1
  108. package/dist/collection/plugins/autoSizeColumn.js +0 -230
  109. package/dist/collection/plugins/basePlugin.js +0 -27
  110. package/dist/collection/plugins/export/csv.js +0 -68
  111. package/dist/collection/plugins/export/export.plugin.js +0 -165
  112. package/dist/collection/plugins/export/types.js +0 -1
  113. package/dist/collection/plugins/filter/conditions/equal.js +0 -17
  114. package/dist/collection/plugins/filter/conditions/number/greaterThan.js +0 -10
  115. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +0 -7
  116. package/dist/collection/plugins/filter/conditions/number/lessThan.js +0 -12
  117. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +0 -7
  118. package/dist/collection/plugins/filter/conditions/set.js +0 -3
  119. package/dist/collection/plugins/filter/conditions/string/beginswith.js +0 -17
  120. package/dist/collection/plugins/filter/conditions/string/contains.js +0 -18
  121. package/dist/collection/plugins/filter/filter.plugin.js +0 -256
  122. package/dist/collection/plugins/filter/filter.pop.js +0 -485
  123. package/dist/collection/plugins/filter/filter.service.js +0 -44
  124. package/dist/collection/plugins/filter/filter.style.css +0 -239
  125. package/dist/collection/plugins/filter/filter.types.js +0 -1
  126. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +0 -30
  127. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js +0 -36
  128. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +0 -21
  129. package/dist/collection/plugins/groupingRow/grouping.const.js +0 -10
  130. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +0 -76
  131. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +0 -258
  132. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +0 -29
  133. package/dist/collection/plugins/groupingRow/grouping.row.types.js +0 -1
  134. package/dist/collection/plugins/groupingRow/grouping.service.js +0 -155
  135. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +0 -57
  136. package/dist/collection/plugins/sorting/sorting.plugin.js +0 -181
  137. package/dist/collection/plugins/sorting/sorting.sign.js +0 -6
  138. package/dist/collection/plugins/stretchPlugin.js +0 -68
  139. package/dist/collection/plugins/trimmed/trimmed.plugin.js +0 -32
  140. package/dist/collection/services/cell.helpers.js +0 -7
  141. package/dist/collection/services/column.data.provider.js +0 -188
  142. package/dist/collection/services/data.provider.js +0 -47
  143. package/dist/collection/services/dimension.provider.js +0 -78
  144. package/dist/collection/services/resizable.directive.js +0 -250
  145. package/dist/collection/services/selection.store.connector.js +0 -213
  146. package/dist/collection/services/viewport.provider.js +0 -14
  147. package/dist/collection/store/dataSource/data.proxy.js +0 -34
  148. package/dist/collection/store/dataSource/data.store.js +0 -127
  149. package/dist/collection/store/dimension/dimension.helpers.js +0 -107
  150. package/dist/collection/store/dimension/dimension.store.js +0 -59
  151. package/dist/collection/store/selection/selection.helpers.js +0 -53
  152. package/dist/collection/store/selection/selection.store.js +0 -68
  153. package/dist/collection/store/selection/selection.store.service.js +0 -35
  154. package/dist/collection/store/storeTypes.js +0 -5
  155. package/dist/collection/store/viewPort/viewport.store.js +0 -121
  156. package/dist/collection/themeManager/theme.compact.js +0 -5
  157. package/dist/collection/themeManager/theme.default.js +0 -5
  158. package/dist/collection/themeManager/theme.material.js +0 -5
  159. package/dist/collection/utils/closestPolifill.js +0 -18
  160. package/dist/collection/utils/consts.js +0 -19
  161. package/dist/collection/utils/generateAlphabetHeader.js +0 -20
  162. package/dist/collection/utils/keyCodes.js +0 -70
  163. package/dist/collection/utils/keyCodes.utils.js +0 -64
  164. package/dist/collection/utils/platform.js +0 -5
  165. package/dist/collection/utils/resizeObserver.js +0 -6
  166. package/dist/collection/utils/store.utils.js +0 -7
  167. package/dist/collection/utilsExternal/generate-data.js +0 -132
  168. package/dist/esm/css-shim-8d75038b.js +0 -4
  169. package/dist/esm/debounce-8dadcda7.js +0 -558
  170. package/dist/esm/dom-1b195079.js +0 -73
  171. package/dist/esm/index-42c84e7c.js +0 -1694
  172. package/dist/esm/index.js +0 -1
  173. package/dist/esm/loader.js +0 -31
  174. package/dist/esm/polyfills/core-js.js +0 -11
  175. package/dist/esm/polyfills/css-shim.js +0 -1
  176. package/dist/esm/polyfills/dom.js +0 -79
  177. package/dist/esm/polyfills/es5-html-element.js +0 -1
  178. package/dist/esm/polyfills/index.js +0 -34
  179. package/dist/esm/polyfills/system.js +0 -6
  180. package/dist/esm/resize-observer-56b7b34f.js +0 -489
  181. package/dist/esm/revo-grid.js +0 -71
  182. package/dist/esm/revogr-clipboard.entry.js +0 -49
  183. package/dist/esm/revogr-filter-panel.entry.js +0 -271
  184. package/dist/esm-es5/css-shim-8d75038b.js +0 -1
  185. package/dist/esm-es5/debounce-8dadcda7.js +0 -1
  186. package/dist/esm-es5/dom-1b195079.js +0 -21
  187. package/dist/esm-es5/index-42c84e7c.js +0 -1
  188. package/dist/esm-es5/index.js +0 -0
  189. package/dist/esm-es5/loader.js +0 -1
  190. package/dist/esm-es5/resize-observer-56b7b34f.js +0 -1
  191. package/dist/esm-es5/revo-grid.js +0 -1
  192. package/dist/esm-es5/revo-grid_11.entry.js +0 -1
  193. package/dist/esm-es5/revogr-clipboard.entry.js +0 -1
  194. package/dist/esm-es5/revogr-filter-panel.entry.js +0 -1
  195. package/dist/index.cjs.js +0 -1
  196. package/dist/index.js +0 -1
  197. package/dist/revo-grid/css-shim-88bfb262.system.js +0 -1
  198. package/dist/revo-grid/css-shim-8d75038b.js +0 -1
  199. package/dist/revo-grid/debounce-d097578d.js +0 -1
  200. package/dist/revo-grid/debounce-f40a88f6.system.js +0 -1
  201. package/dist/revo-grid/dom-1b195079.js +0 -19
  202. package/dist/revo-grid/dom-ee2dd1b3.system.js +0 -21
  203. package/dist/revo-grid/index-a15e7527.system.js +0 -1
  204. package/dist/revo-grid/index-a7f99799.js +0 -1
  205. package/dist/revo-grid/index.system.js +0 -1
  206. package/dist/revo-grid/resize-observer-56b7b34f.js +0 -1
  207. package/dist/revo-grid/resize-observer-7a7b9757.system.js +0 -1
  208. package/dist/revo-grid/revo-grid.js +0 -132
  209. package/dist/revo-grid/revo-grid.system.js +0 -1
  210. package/dist/revo-grid/revo-grid_11.entry.js +0 -1
  211. package/dist/revo-grid/revo-grid_11.system.entry.js +0 -1
  212. package/dist/revo-grid/revogr-clipboard.system.entry.js +0 -1
  213. package/dist/revo-grid/revogr-filter-panel.system.entry.js +0 -1
@@ -1,29 +0,0 @@
1
- import { h } from '@stencil/core';
2
- import RowRenderer from '../../components/data/rowRenderer';
3
- import { GROUP_DEPTH, GROUP_EXPANDED, GROUP_EXPAND_BTN, GROUP_EXPAND_EVENT, PSEUDO_GROUP_ITEM } from './grouping.const';
4
- function expandEvent(e, model, virtualIndex) {
5
- const event = new CustomEvent(GROUP_EXPAND_EVENT, {
6
- detail: {
7
- model,
8
- virtualIndex,
9
- },
10
- cancelable: true,
11
- bubbles: true,
12
- });
13
- e.target.dispatchEvent(event);
14
- }
15
- const GroupingRowRenderer = (props) => {
16
- const { model, itemIndex, hasExpand } = props;
17
- const name = model[PSEUDO_GROUP_ITEM];
18
- const expanded = model[GROUP_EXPANDED];
19
- const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
20
- if (!hasExpand) {
21
- return h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }));
22
- }
23
- return (h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
24
- h("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) },
25
- h("svg", { "aria-hidden": "true", style: { transform: `rotate(${!expanded ? -90 : 0}deg)` }, focusable: "false", viewBox: "0 0 448 512" },
26
- h("path", { fill: "currentColor", d: "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" }))),
27
- name));
28
- };
29
- export default GroupingRowRenderer;
@@ -1,155 +0,0 @@
1
- import { GROUP_DEPTH, GROUP_EXPANDED, PSEUDO_GROUP_COLUMN, PSEUDO_GROUP_ITEM, PSEUDO_GROUP_ITEM_ID, PSEUDO_GROUP_ITEM_VALUE } from './grouping.const';
2
- /**
3
- * Do actual grouping
4
- * @param array - items to group
5
- * @param f - function responsible for grouping, returns property to group by
6
- */
7
- function groupBy(array, f) {
8
- const groupsOrder = [];
9
- const itemsByGroup = {};
10
- array.forEach((item, i) => {
11
- // get grouping values
12
- const groupKeys = JSON.stringify(f(item));
13
- // new group identification
14
- if (!itemsByGroup[groupKeys]) {
15
- itemsByGroup[groupKeys] = new Map();
16
- // create group parents
17
- groupsOrder.push({
18
- children: itemsByGroup[groupKeys],
19
- id: groupKeys,
20
- });
21
- }
22
- // save to group with previous index
23
- itemsByGroup[groupKeys].set(i, item);
24
- });
25
- return groupsOrder;
26
- }
27
- /**
28
- * Gather data for grouping
29
- * @param array - flat data array
30
- * @param mapFunc - mapping function for stringify
31
- * @param expanded - potentially expanded items if present
32
- */
33
- export function gatherGrouping(array, mapFunc, { prevExpanded, expandedAll }) {
34
- // build groups
35
- const groupsOrder = groupBy(array, mapFunc);
36
- const itemsMirror = []; // grouped source
37
- const pseudoGroupTest = {}; // check if group header exists
38
- // item index in source
39
- let itemIndex = 0;
40
- // to save max group depth
41
- let groupingDepth = 0;
42
- // collapse all groups in the beginning
43
- const trimmed = {};
44
- // index mapping
45
- const oldNewIndexMap = {};
46
- // go through groups
47
- groupsOrder.forEach(group => {
48
- const parseGroup = getParsedGroup(group.id);
49
- // extra precaution and type safe guard
50
- if (!parseGroup) {
51
- return;
52
- }
53
- let depth = 0;
54
- let skipTrim = !!expandedAll;
55
- let isExpanded = skipTrim;
56
- const children = [];
57
- // add group headers
58
- parseGroup.reduce((prevVal, groupValue) => {
59
- prevVal.push(groupValue);
60
- const newVal = prevVal.join(',');
61
- // if header not added, add new header
62
- if (!pseudoGroupTest[newVal]) {
63
- isExpanded = expandedAll || (prevExpanded && prevExpanded[newVal]);
64
- itemsMirror.push(getPseudoGroup(groupValue, newVal, depth, group.id, isExpanded));
65
- // if not first level auto collapse
66
- if (depth && !isExpanded && !skipTrim) {
67
- // check if parent expanded, expand this layer too
68
- const parent = prevVal.slice(0, prevVal.length - 1);
69
- if (!(prevExpanded && parent.length && prevExpanded[parent.join(',')])) {
70
- trimmed[itemIndex] = true;
71
- }
72
- }
73
- itemIndex++;
74
- pseudoGroupTest[newVal] = children;
75
- }
76
- // calculate depth
77
- depth++;
78
- groupingDepth = depth;
79
- return prevVal;
80
- }, []);
81
- // add regular items
82
- group.children.forEach((item, oldIndex) => {
83
- // hide items if group colapsed
84
- if (!isExpanded && !skipTrim) {
85
- // collapse rgRow
86
- trimmed[itemIndex] = true;
87
- }
88
- // add items to new source
89
- itemsMirror.push(item);
90
- oldNewIndexMap[oldIndex] = itemIndex;
91
- children.push(itemIndex);
92
- itemIndex++;
93
- });
94
- });
95
- return {
96
- // updates source mirror
97
- sourceWithGroups: itemsMirror,
98
- // largest depth for grouping
99
- depth: groupingDepth,
100
- // used for expand/collapse grouping values
101
- trimmed,
102
- // used for mapping old values to new
103
- oldNewIndexMap,
104
- // used to get child items in group
105
- childrenByGroup: pseudoGroupTest,
106
- };
107
- }
108
- function getPseudoGroup(groupValue, value, depth, id, isExpanded = false) {
109
- return {
110
- [PSEUDO_GROUP_ITEM]: groupValue,
111
- [GROUP_DEPTH]: depth,
112
- [PSEUDO_GROUP_ITEM_ID]: id,
113
- [PSEUDO_GROUP_ITEM_VALUE]: value,
114
- [GROUP_EXPANDED]: isExpanded,
115
- };
116
- }
117
- export function getGroupingName(rgRow) {
118
- return rgRow && rgRow[PSEUDO_GROUP_ITEM];
119
- }
120
- export function isGrouping(rgRow) {
121
- return rgRow && typeof rgRow[PSEUDO_GROUP_ITEM] !== 'undefined';
122
- }
123
- export function isGroupingColumn(column) {
124
- return column && typeof column[PSEUDO_GROUP_COLUMN] !== 'undefined';
125
- }
126
- export function isArray(data) {
127
- return typeof data.push !== 'undefined';
128
- }
129
- export function measureEqualDepth(groupA, groupB) {
130
- const ln = groupA.length;
131
- let i = 0;
132
- for (; i < ln; i++) {
133
- if (groupA[i] !== groupB[i]) {
134
- return i;
135
- }
136
- }
137
- return i;
138
- }
139
- export function getParsedGroup(id) {
140
- const parseGroup = JSON.parse(id);
141
- // extra precaution and type safe guard
142
- if (!isArray(parseGroup)) {
143
- return null;
144
- }
145
- return parseGroup;
146
- }
147
- // check if items is child of current clicked group
148
- export function isSameGroup(currentGroup, currentModel, nextModel) {
149
- const nextGroup = getParsedGroup(nextModel[PSEUDO_GROUP_ITEM_ID]);
150
- if (!nextGroup) {
151
- return false;
152
- }
153
- const depth = measureEqualDepth(currentGroup, nextGroup);
154
- return currentModel[GROUP_DEPTH] < depth;
155
- }
@@ -1,57 +0,0 @@
1
- import { gatherTrimmedItems } from '../trimmed/trimmed.plugin';
2
- export const TRIMMED_GROUPING = 'grouping';
3
- /**
4
- * Prepare trimming updated indexes for grouping
5
- * @param initiallyTrimed
6
- * @param firstLevelMap
7
- * @param secondLevelMap
8
- */
9
- export function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLevelMap) {
10
- const trimemedOptionsToUpgrade = {};
11
- /**
12
- * go through all groups except grouping
13
- */
14
- for (let type in initiallyTrimed) {
15
- if (type === TRIMMED_GROUPING) {
16
- continue;
17
- }
18
- const items = initiallyTrimed[type];
19
- const newItems = {};
20
- for (let initialIndex in items) {
21
- /**
22
- * if item exists we find it in collection
23
- * we support 2 level of conversions
24
- */
25
- let newConversionIndex = firstLevelMap[initialIndex];
26
- if (secondLevelMap) {
27
- newConversionIndex = secondLevelMap[newConversionIndex];
28
- }
29
- /**
30
- * if item was trimmed previously
31
- * trimming makes sense to apply
32
- */
33
- if (items[initialIndex]) {
34
- newItems[newConversionIndex] = true;
35
- /**
36
- * If changes present apply changes to new source
37
- */
38
- if (newConversionIndex !== parseInt(initialIndex, 10)) {
39
- trimemedOptionsToUpgrade[type] = newItems;
40
- }
41
- }
42
- }
43
- }
44
- return trimemedOptionsToUpgrade;
45
- }
46
- export function filterOutEmptyGroups(allTrimmedGroups, childrenByGroup = {}) {
47
- const trimmedGroup = {};
48
- const allTrimmed = gatherTrimmedItems(allTrimmedGroups);
49
- // find is groups are filled
50
- for (let groupIndex in childrenByGroup) {
51
- const hasChidlren = childrenByGroup[groupIndex].filter(childIndex => !allTrimmed[childIndex]).length > 0;
52
- if (!hasChidlren) {
53
- trimmedGroup[groupIndex] = true;
54
- }
55
- }
56
- return trimmedGroup;
57
- }
@@ -1,181 +0,0 @@
1
- import size from 'lodash/size';
2
- import { setStore } from '../../utils/store.utils';
3
- import ColumnDataProvider from '../../services/column.data.provider';
4
- import BasePlugin from '../basePlugin';
5
- /**
6
- * lifecycle
7
- * 1) @event beforesorting - sorting just started, nothing happened yet
8
- * 2) @metod updateColumnSorting - column sorting icon applied to grid and column get updated, data still untiuched
9
- * 3) @event beforesortingapply - before we applied sorting data to data source, you can prevent data apply from here
10
- * 4) @event afterSortingApply - sorting applied, just finished event
11
- *
12
- * If you prevent event it'll not reach farther steps
13
- */
14
- export default class SortingPlugin extends BasePlugin {
15
- constructor(revogrid) {
16
- super(revogrid);
17
- this.revogrid = revogrid;
18
- this.sorting = null;
19
- this.sortingFunc = null;
20
- const beforesourceset = ({ detail }) => {
21
- if (this.hasSorting) {
22
- // is sorting allowed
23
- const event = this.emit('beforesourcesortingapply');
24
- // sorting prevented
25
- if (event.defaultPrevented) {
26
- return;
27
- }
28
- }
29
- const data = this.setData(detail.source, detail.type);
30
- if (data) {
31
- detail.source = data;
32
- }
33
- };
34
- const aftercolumnsset = async ({ detail: { order } }) => {
35
- const columns = await this.revogrid.getColumns();
36
- const sortingFunc = {};
37
- for (let prop in order) {
38
- const column = ColumnDataProvider.getColumnByProp(columns, prop);
39
- const cmp = (column === null || column === void 0 ? void 0 : column.cellCompare) || this.defaultCellCompare;
40
- sortingFunc[prop] = order[prop] == 'desc' ? this.descCellCompare(cmp) : cmp;
41
- }
42
- this.sort(order, sortingFunc);
43
- };
44
- const headerclick = async (e) => {
45
- var _a, _b;
46
- if (e.defaultPrevented) {
47
- return;
48
- }
49
- if (!e.detail.column.sortable) {
50
- return;
51
- }
52
- this.headerclick(e.detail.column, e.detail.index, (_b = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.originalEvent) === null || _b === void 0 ? void 0 : _b.shiftKey);
53
- };
54
- this.addEventListener('beforesourceset', beforesourceset);
55
- this.addEventListener('aftercolumnsset', aftercolumnsset);
56
- this.addEventListener('initialHeaderClick', headerclick);
57
- }
58
- get hasSorting() {
59
- return !!this.sorting;
60
- }
61
- async headerclick(column, index, additive) {
62
- let order = this.getNextOrder(column.order);
63
- const beforeEvent = this.emit('beforesorting', { column, order, additive });
64
- if (beforeEvent.defaultPrevented) {
65
- return;
66
- }
67
- order = beforeEvent.detail.order;
68
- const newCol = await this.revogrid.updateColumnSorting(beforeEvent.detail.column, index, order, additive);
69
- // apply sort data
70
- const beforeApplyEvent = this.emit('beforesortingapply', { column: newCol, order, additive });
71
- if (beforeApplyEvent.defaultPrevented) {
72
- return;
73
- }
74
- order = beforeApplyEvent.detail.order;
75
- const cellCmp = (column === null || column === void 0 ? void 0 : column.cellCompare) || this.defaultCellCompare;
76
- const cmp = order == 'asc' ? cellCmp : order == 'desc' ? this.descCellCompare(cellCmp) : undefined;
77
- if (additive && this.sorting) {
78
- const sorting = {};
79
- const sortingFunc = {};
80
- Object.assign(sorting, this.sorting);
81
- Object.assign(sortingFunc, this.sortingFunc);
82
- if (column.prop in sorting && size(sorting) > 1 && order === undefined) {
83
- delete sorting[column.prop];
84
- delete sortingFunc[column.prop];
85
- }
86
- else {
87
- sorting[column.prop] = order;
88
- sortingFunc[column.prop] = cmp;
89
- }
90
- this.sort(sorting, sortingFunc);
91
- }
92
- else {
93
- this.sort({ [column.prop]: order }, { [column.prop]: cmp });
94
- }
95
- }
96
- setData(data, type) {
97
- // sorting available for rgRow type only
98
- if (type === 'rgRow' && this.sortingFunc) {
99
- return this.sortItems(data, this.sortingFunc);
100
- }
101
- }
102
- /**
103
- * Sorting apply, available for rgRow type only
104
- * @param sorting - per column sorting
105
- * @param data - this.stores['rgRow'].store.get('source')
106
- */
107
- async sort(sorting, sortingFunc) {
108
- if (!size(sorting)) {
109
- this.sorting = null;
110
- this.sortingFunc = null;
111
- return;
112
- }
113
- this.sorting = sorting;
114
- this.sortingFunc = sortingFunc;
115
- const store = await this.revogrid.getSourceStore();
116
- const source = store.get('source');
117
- const proxyItems = this.sortIndexByItems([...store.get('proxyItems')], source, this.sortingFunc);
118
- setStore(store, {
119
- proxyItems,
120
- source: [...source],
121
- });
122
- this.emit('afterSortingApply');
123
- }
124
- defaultCellCompare(prop, a, b) {
125
- var _a, _b;
126
- const av = (_a = a[prop]) === null || _a === void 0 ? void 0 : _a.toString().toLowerCase();
127
- const bv = (_b = b[prop]) === null || _b === void 0 ? void 0 : _b.toString().toLowerCase();
128
- return av == bv ? 0 : av > bv ? 1 : -1;
129
- }
130
- descCellCompare(cmp) {
131
- return (prop, a, b) => { return -1 * cmp(prop, a, b); };
132
- }
133
- sortIndexByItems(indexes, source, sortingFunc) {
134
- // TODO - is there a situation where multiple kvps in the `sorting` object would cause this to break?
135
- for (let prop in sortingFunc) {
136
- if (typeof sortingFunc[prop] === 'undefined') {
137
- // Unsort indexes
138
- return [...Array(indexes.length).keys()];
139
- }
140
- }
141
- return indexes.sort((a, b) => {
142
- let sorted = 0;
143
- for (let prop in sortingFunc) {
144
- const cmp = sortingFunc[prop];
145
- const itemA = source[a];
146
- const itemB = source[b];
147
- sorted = cmp(prop, itemA, itemB);
148
- if (sorted) {
149
- break;
150
- }
151
- }
152
- return sorted;
153
- });
154
- }
155
- sortItems(source, sortingFunc) {
156
- return source.sort((a, b) => {
157
- let sorted = 0;
158
- for (let prop in sortingFunc) {
159
- const cmp = sortingFunc[prop];
160
- if (!cmp) {
161
- continue;
162
- }
163
- sorted = cmp(prop, a, b);
164
- if (sorted) {
165
- break;
166
- }
167
- }
168
- return sorted;
169
- });
170
- }
171
- getNextOrder(currentOrder) {
172
- switch (currentOrder) {
173
- case undefined:
174
- return 'asc';
175
- case 'asc':
176
- return 'desc';
177
- case 'desc':
178
- return undefined;
179
- }
180
- }
181
- }
@@ -1,6 +0,0 @@
1
- import { h } from '@stencil/core';
2
- export const FILTER_BUTTON_CLASS = 'rv-filter';
3
- export const FILTER_BUTTON_ACTIVE = 'active';
4
- export const SortingSign = ({ column }) => {
5
- return h("i", { class: column.order });
6
- };
@@ -1,68 +0,0 @@
1
- import { each } from 'lodash';
2
- import { getScrollbarWidth } from '../utils/utils';
3
- import BasePlugin from './basePlugin';
4
- export default class StretchColumn extends BasePlugin {
5
- constructor(revogrid, dimensionProvider) {
6
- super(revogrid);
7
- this.dimensionProvider = dimensionProvider;
8
- this.stretchedColumn = null;
9
- this.scrollSize = getScrollbarWidth(document);
10
- const beforecolumnapplied = ({ detail: { columns } }) => this.applyStretch(columns);
11
- this.addEventListener('beforecolumnapplied', beforecolumnapplied);
12
- }
13
- setScroll({ type, hasScroll }) {
14
- var _a;
15
- if (type === 'rgRow' && this.stretchedColumn && ((_a = this.stretchedColumn) === null || _a === void 0 ? void 0 : _a.initialSize) === this.stretchedColumn.size) {
16
- if (hasScroll) {
17
- this.stretchedColumn.size -= this.scrollSize;
18
- this.apply();
19
- this.dropChanges();
20
- }
21
- }
22
- }
23
- activateChanges() {
24
- const setScroll = ({ detail }) => this.setScroll(detail);
25
- this.addEventListener('scrollchange', setScroll);
26
- }
27
- dropChanges() {
28
- this.stretchedColumn = null;
29
- this.removeEventListener('scrollchange');
30
- }
31
- apply() {
32
- if (!this.stretchedColumn) {
33
- return;
34
- }
35
- const type = 'rgCol';
36
- this.dimensionProvider.setDimensionSize(type, { [this.stretchedColumn.index]: this.stretchedColumn.size });
37
- }
38
- applyStretch(columns) {
39
- this.dropChanges();
40
- let sizeDifference = this.revogrid.clientWidth - 1;
41
- each(columns, (_c, type) => {
42
- const realSize = this.dimensionProvider.stores[type].store.get('realSize');
43
- sizeDifference -= realSize;
44
- });
45
- if (sizeDifference > 0) {
46
- // currently plugin accepts last column
47
- const index = columns.rgCol.length - 1;
48
- const last = columns.rgCol[index];
49
- // has column
50
- // no auto size applied
51
- // size for column shouldn't be defined
52
- const colSize = (last === null || last === void 0 ? void 0 : last.size) || this.revogrid.colSize || 0;
53
- const size = sizeDifference + colSize - 1;
54
- if (last && !last.autoSize && (colSize < size)) {
55
- this.stretchedColumn = {
56
- initialSize: size,
57
- index,
58
- size
59
- };
60
- this.apply();
61
- this.activateChanges();
62
- }
63
- }
64
- }
65
- }
66
- export function isStretchPlugin(plugin) {
67
- return !!plugin.applyStretch;
68
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Hide items from main collection
3
- * But keep them in store
4
- */
5
- export const trimmedPlugin = (store) => ({
6
- set(k, newVal) {
7
- switch (k) {
8
- case 'trimmed':
9
- const proxy = store.get('proxyItems');
10
- const trimmed = gatherTrimmedItems(newVal);
11
- const newItems = proxy.reduce((result, v) => {
12
- // check if present in new trimmed remove from items (filter)
13
- if (!trimmed[v]) {
14
- result.push(v);
15
- }
16
- return result;
17
- }, []);
18
- store.set('items', newItems);
19
- break;
20
- }
21
- },
22
- });
23
- export function gatherTrimmedItems(trimmedItems) {
24
- const trimmed = {};
25
- for (let trimmedKey in trimmedItems) {
26
- // trimmed overweight not trimmed
27
- for (let t in trimmedItems[trimmedKey]) {
28
- trimmed[t] = trimmed[t] || trimmedItems[trimmedKey][t];
29
- }
30
- }
31
- return trimmed;
32
- }
@@ -1,7 +0,0 @@
1
- import { DATA_COL, DATA_ROW } from '../utils/consts';
2
- export function getCell(cell) {
3
- return {
4
- x: parseInt(cell.getAttribute(DATA_COL), 10),
5
- y: parseInt(cell.getAttribute(DATA_ROW), 10),
6
- };
7
- }