@revolist/revogrid 4.23.13 → 4.23.14

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 (74) hide show
  1. package/dist/cjs/{cell-renderer-DfUCisis.js → cell-renderer-Dcz022q7.js} +5 -23
  2. package/dist/cjs/{column.drag.plugin-D_Dfhp4f.js → column.drag.plugin-BGLbi1zS.js} +9 -38
  3. package/dist/cjs/{column.service-BNWNiJW3.js → column.service-C1Qvcf5l.js} +23 -62
  4. package/dist/cjs/{filter.button-B9EzJrr1.js → filter.button-w6LWnyhi.js} +0 -16
  5. package/dist/cjs/{header-cell-renderer-DyjOxArm.js → header-cell-renderer-vVr4IWNV.js} +1 -1
  6. package/dist/cjs/index.cjs.js +5 -8
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/revo-grid.cjs.entry.js +6 -6
  9. package/dist/cjs/revo-grid.cjs.js +1 -1
  10. package/dist/cjs/revogr-attribution_7.cjs.entry.js +4 -40
  11. package/dist/cjs/revogr-data_4.cjs.entry.js +6 -14
  12. package/dist/cjs/revogr-filter-panel.cjs.entry.js +68 -119
  13. package/dist/collection/components/data/column.service.js +23 -62
  14. package/dist/collection/components/data/row-renderer.js +2 -15
  15. package/dist/collection/components/overlay/revogr-overlay-selection.js +7 -27
  16. package/dist/collection/components/revoGrid/revo-grid.js +7 -14
  17. package/dist/collection/components/scroll/revogr-viewport-scroll.js +2 -10
  18. package/dist/collection/plugins/filter/filter.button.js +0 -14
  19. package/dist/collection/plugins/filter/filter.panel.js +68 -80
  20. package/dist/collection/plugins/filter/filter.plugin.js +4 -4
  21. package/dist/collection/plugins/filter/filter.style.css +18 -56
  22. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +2 -7
  23. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +2 -30
  24. package/dist/collection/serve/controller.js +0 -1
  25. package/dist/esm/{cell-renderer-CLTRlCa5.js → cell-renderer-BtN-NGCk.js} +5 -23
  26. package/dist/esm/{column.drag.plugin-UNSHSmgo.js → column.drag.plugin-4Ixr4ijU.js} +10 -38
  27. package/dist/esm/{column.service-C6hByxPy.js → column.service-CC_SD8W3.js} +23 -62
  28. package/dist/{revo-grid/filter.button-BFwo1uvz.js → esm/filter.button-C8XTWPU2.js} +1 -15
  29. package/dist/esm/{header-cell-renderer-BMmXRsd_.js → header-cell-renderer-B-LX2sgu.js} +1 -1
  30. package/dist/esm/index.js +6 -6
  31. package/dist/esm/loader.js +1 -1
  32. package/dist/esm/revo-grid.entry.js +6 -6
  33. package/dist/esm/revo-grid.js +1 -1
  34. package/dist/esm/revogr-attribution_7.entry.js +4 -40
  35. package/dist/esm/revogr-data_4.entry.js +6 -14
  36. package/dist/esm/revogr-filter-panel.entry.js +68 -119
  37. package/dist/revo-grid/{cell-renderer-CLTRlCa5.js → cell-renderer-BtN-NGCk.js} +5 -23
  38. package/dist/revo-grid/{column.drag.plugin-UNSHSmgo.js → column.drag.plugin-4Ixr4ijU.js} +10 -38
  39. package/dist/revo-grid/{column.service-C6hByxPy.js → column.service-CC_SD8W3.js} +23 -62
  40. package/dist/{esm/filter.button-BFwo1uvz.js → revo-grid/filter.button-C8XTWPU2.js} +1 -15
  41. package/dist/revo-grid/{header-cell-renderer-BMmXRsd_.js → header-cell-renderer-B-LX2sgu.js} +1 -1
  42. package/dist/revo-grid/index.esm.js +6 -6
  43. package/dist/revo-grid/revo-grid.entry.js +6 -6
  44. package/dist/revo-grid/revo-grid.esm.js +1 -1
  45. package/dist/revo-grid/revogr-attribution_7.entry.js +4 -40
  46. package/dist/revo-grid/revogr-data_4.entry.js +6 -14
  47. package/dist/revo-grid/revogr-filter-panel.entry.js +68 -119
  48. package/dist/types/components/data/column.service.d.ts +1 -10
  49. package/dist/types/components/data/row-renderer.d.ts +1 -1
  50. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +3 -4
  51. package/dist/types/components/revoGrid/revo-grid.d.ts +4 -4
  52. package/dist/types/components.d.ts +14 -14
  53. package/dist/types/plugins/filter/filter.button.d.ts +0 -11
  54. package/dist/types/plugins/filter/filter.panel.d.ts +4 -7
  55. package/dist/types/plugins/filter/filter.plugin.d.ts +0 -1
  56. package/dist/types/plugins/filter/filter.types.d.ts +0 -1
  57. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +0 -4
  58. package/dist/types/types/interfaces.d.ts +0 -8
  59. package/hydrate/index.js +107 -303
  60. package/hydrate/index.mjs +107 -303
  61. package/package.json +1 -1
  62. package/readme.md +1 -20
  63. package/standalone/column.service.js +1 -1
  64. package/standalone/filter.button.js +1 -1
  65. package/standalone/index.js +1 -1
  66. package/standalone/revo-grid.js +1 -1
  67. package/standalone/revogr-data2.js +1 -1
  68. package/standalone/revogr-filter-panel.js +1 -1
  69. package/standalone/revogr-overlay-selection2.js +1 -1
  70. package/standalone/revogr-viewport-scroll2.js +1 -1
  71. package/dist/collection/components/overlay/clipboard.utils.js +0 -26
  72. package/dist/collection/plugins/filter/filter.reorder.js +0 -44
  73. package/dist/types/components/overlay/clipboard.utils.d.ts +0 -3
  74. package/dist/types/plugins/filter/filter.reorder.d.ts +0 -4
@@ -4,9 +4,8 @@
4
4
  // filter.panel.tsx
5
5
  import { h, Host, } from "@stencil/core";
6
6
  import debounce from "lodash/debounce";
7
- import { AndOrButton, isFilterBtn, ReorderButton, TrashButton } from "./filter.button";
7
+ import { AndOrButton, isFilterBtn, TrashButton } from "./filter.button";
8
8
  import "../../utils/closest.polifill";
9
- import { getFilterReorderId, moveFilterItem, setFilterReorderData, } from "./filter.reorder";
10
9
  const defaultType = 'none';
11
10
  const FILTER_LIST_CLASS = 'multi-filter-list';
12
11
  const FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';
@@ -103,7 +102,6 @@ export class FilterPanel {
103
102
  if (typeof prop === 'undefined')
104
103
  return '';
105
104
  const propFilters = (_b = this.filterItems[prop]) !== null && _b !== void 0 ? _b : [];
106
- const visibleFilterCount = propFilters.filter(filter => !filter.hidden).length;
107
105
  const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
108
106
  return (h("div", { key: this.filterId }, propFilters.map((filter, index) => {
109
107
  let andOrButton;
@@ -114,24 +112,56 @@ export class FilterPanel {
114
112
  if (index !== this.filterItems[prop].length - 1) {
115
113
  andOrButton = (h("div", { onClick: () => this.toggleFilterAndOr(filter.id) }, h(AndOrButton, { text: filter.relation === 'and' ? capts.and : capts.or })));
116
114
  }
117
- const extra = this.renderExtra(prop, index);
118
- return (h("div", { key: filter.id, class: FILTER_LIST_CLASS }, h("div", { ref: el => el === null || el === void 0 ? void 0 : el.classList.add('multi-filter-list-row') }, visibleFilterCount > 1 ? (h(ReorderButton, { dragging: this.draggedFilterId === filter.id, dragOver: this.dragOverFilterId === filter.id && this.draggedFilterId !== filter.id, onDragStart: e => this.onFilterDragStart(e, filter.id), onDragEnd: () => this.onFilterDragEnd(), onDragOver: e => this.onFilterDragOver(e, filter.id), onDragLeave: () => this.onFilterDragLeave(filter.id), onDrop: e => this.onFilterDrop(e, prop, filter.id) })) : '', h("div", { class: { 'select-input': true } }, h("select", { class: "select-css select-filter", onChange: e => this.onFilterTypeChange(e, prop, index) }, this.renderSelectOptions(this.filterItems[prop][index].type, true)), extra ? h("div", { class: "filter-extra" }, extra) : ''), h("div", { class: FILTER_LIST_CLASS_ACTION }, andOrButton, h("div", { onClick: () => this.onRemoveFilter(filter.id) }, h(TrashButton, null))))));
115
+ return (h("div", { key: filter.id, class: FILTER_LIST_CLASS }, h("div", { class: { 'select-input': true } }, h("select", { class: "select-css select-filter", onChange: e => this.onFilterTypeChange(e, prop, index) }, this.renderSelectOptions(this.filterItems[prop][index].type, true)), h("div", { class: FILTER_LIST_CLASS_ACTION }, andOrButton), h("div", { onClick: () => this.onRemoveFilter(filter.id) }, h(TrashButton, null))), h("div", null, this.renderExtra(prop, index))));
119
116
  }), propFilters.filter(f => !f.hidden).length > 0 ? h("div", { class: "add-filter-divider" }) : ''));
120
117
  }
118
+ componentDidRender() {
119
+ this.syncDialog();
120
+ }
121
+ syncDialog() {
122
+ if (!this.dialog) {
123
+ return;
124
+ }
125
+ if (!this.changes) {
126
+ if (this.dialog.open) {
127
+ this.dialog.close();
128
+ }
129
+ return;
130
+ }
131
+ if (!this.dialog.open) {
132
+ this.dialog.show();
133
+ }
134
+ if (this.changes.autoCorrect !== false) {
135
+ requestAnimationFrame(() => this.autoCorrect(this.dialog));
136
+ }
137
+ }
121
138
  autoCorrect(el) {
122
- var _a, _b;
123
139
  if (!el) {
124
140
  return;
125
141
  }
126
- const revoGrid = el.closest('revo-grid');
127
- if (!revoGrid) {
142
+ const pos = el.getBoundingClientRect();
143
+ const maxLeft = Math.max(0, window.innerWidth - pos.width);
144
+ const maxTop = Math.max(0, window.innerHeight - pos.height);
145
+ if (pos.left > maxLeft) {
146
+ el.style.left = `${maxLeft}px`;
147
+ }
148
+ if (pos.top > maxTop) {
149
+ el.style.top = `${maxTop}px`;
150
+ }
151
+ }
152
+ onDialogMouseDown(e) {
153
+ if (!this.closeOnOutsideClick ||
154
+ e.target !== this.dialog ||
155
+ !this.dialog) {
128
156
  return;
129
157
  }
130
- const pos = el.getBoundingClientRect();
131
- const gridPos = revoGrid.getBoundingClientRect();
132
- const maxLeft = gridPos.right - pos.width;
133
- if (pos.left > maxLeft && el.offsetLeft) {
134
- el.style.left = `${maxLeft - ((_b = (_a = el.parentElement) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().left) !== null && _b !== void 0 ? _b : 0)}px`;
158
+ const rect = this.dialog.getBoundingClientRect();
159
+ const isInside = e.clientX >= rect.left &&
160
+ e.clientX <= rect.right &&
161
+ e.clientY >= rect.top &&
162
+ e.clientY <= rect.bottom;
163
+ if (!isInside) {
164
+ this.onCancel();
135
165
  }
136
166
  }
137
167
  onFilterTypeChange(e, prop, index) {
@@ -224,49 +254,6 @@ export class FilterPanel {
224
254
  this.debouncedApplyFilter();
225
255
  }
226
256
  }
227
- onFilterDragStart(e, id) {
228
- this.draggedFilterId = id;
229
- setFilterReorderData(e.dataTransfer, id);
230
- }
231
- onFilterDragOver(e, id) {
232
- if (this.draggedFilterId === undefined || this.draggedFilterId === id) {
233
- return;
234
- }
235
- e.preventDefault();
236
- if (e.dataTransfer) {
237
- e.dataTransfer.dropEffect = 'move';
238
- }
239
- this.dragOverFilterId = id;
240
- }
241
- onFilterDragLeave(id) {
242
- if (this.dragOverFilterId === id) {
243
- this.dragOverFilterId = undefined;
244
- }
245
- }
246
- onFilterDrop(e, prop, targetId) {
247
- var _a;
248
- e.preventDefault();
249
- const sourceId = (_a = this.draggedFilterId) !== null && _a !== void 0 ? _a : getFilterReorderId(e.dataTransfer);
250
- this.onFilterDragEnd();
251
- if (sourceId === undefined) {
252
- return;
253
- }
254
- const items = this.filterItems[prop];
255
- if (!items) {
256
- return;
257
- }
258
- if (!moveFilterItem(items, sourceId, targetId)) {
259
- return;
260
- }
261
- this.filterId++;
262
- if (!this.disableDynamicFiltering) {
263
- this.debouncedApplyFilter();
264
- }
265
- }
266
- onFilterDragEnd() {
267
- this.draggedFilterId = undefined;
268
- this.dragOverFilterId = undefined;
269
- }
270
257
  toggleFilterAndOr(id) {
271
258
  var _a;
272
259
  this.assertChanges();
@@ -375,30 +362,33 @@ export class FilterPanel {
375
362
  } }));
376
363
  }
377
364
  render() {
378
- var _a, _b, _c, _d, _e;
379
- if (!this.changes) {
380
- return h(Host, { style: { display: 'none' } });
381
- }
365
+ var _a, _b, _c, _d, _e, _f, _g;
382
366
  const style = {
383
- display: 'block',
384
- left: `${this.changes.x}px`,
385
- top: `${this.changes.y}px`,
367
+ left: `${(_b = (_a = this.changes) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0}px`,
368
+ top: `${(_d = (_c = this.changes) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0}px`,
386
369
  };
387
370
  const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
388
- return (h(Host, { style: style, ref: el => {
389
- var _a;
390
- ((_a = this.changes) === null || _a === void 0 ? void 0 : _a.autoCorrect) !== false && this.autoCorrect(el);
391
- } }, h("slot", { slot: "header" }), ((_b = (_a = this.changes).extraContent) === null || _b === void 0 ? void 0 : _b.call(_a, this.changes)) || '', ((_c = this.changes) === null || _c === void 0 ? void 0 : _c.hideDefaultFilters) !== true && ([
392
- h("label", null, capts.title),
393
- h("div", { class: "filter-holder" }, this.getFilterItemsList()),
394
- h("div", { class: "add-filter" }, h("select", { id: FILTER_ID, class: "select-css", onChange: e => this.onAddNewFilter(e) }, this.renderSelectOptions(this.currentFilterType)))
395
- ]), h("slot", null), ((_e = (_d = this.changes).extraBottomContent) === null || _e === void 0 ? void 0 : _e.call(_d, this.changes)) || '', h("div", { class: "filter-actions" }, this.disableDynamicFiltering && [
396
- h("button", { id: "revo-button-save", "aria-label": "save", class: "revo-button green", onClick: () => this.onSave() }, capts.save),
397
- h("button", { id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, capts.cancel),
398
- ], !this.disableDynamicFiltering && [
399
- h("button", { id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, capts.ok),
400
- h("button", { id: "revo-button-reset", "aria-label": "reset", class: "revo-button outline", onClick: () => this.onReset() }, capts.reset),
401
- ]), h("slot", { slot: "footer" })));
371
+ return (h(Host, { key: '9fb424017d080876ff7796237917b4f41f617fe0' }, h("dialog", { key: '37b9f870b95f6fe1bd7be359dd7b77ef196e896e', class: "filter-panel-dialog", style: style, ref: el => (this.dialog = el), onCancel: e => {
372
+ e.preventDefault();
373
+ this.onCancel();
374
+ }, onMouseDown: e => this.onDialogMouseDown(e) }, this.changes && [
375
+ h("slot", { key: '76ec505a92d0a7c1ae0bbb5f4cac63555f3416be', slot: "header" }),
376
+ ((_f = (_e = this.changes).extraContent) === null || _f === void 0 ? void 0 : _f.call(_e, this.changes)) || '',
377
+ ((_g = this.changes) === null || _g === void 0 ? void 0 : _g.hideDefaultFilters) !== true && [
378
+ h("label", { key: 'c6fd82c95f6005f286c7bc90de34956128a83246' }, capts.title),
379
+ h("div", { key: '5e7dac36ad79ba1b6072a0053b30aa384ade0dde', class: "filter-holder" }, this.getFilterItemsList()),
380
+ h("div", { key: 'd9b6103edbd138d4db845745686ee4c847310a66', class: "add-filter" }, h("select", { key: 'c1b321f2d19458f95ab3f9188d83d94bebdb688e', id: FILTER_ID, class: "select-css", onChange: e => this.onAddNewFilter(e) }, this.renderSelectOptions(this.currentFilterType))),
381
+ ],
382
+ h("slot", { key: '1571dcbc5c57651deb42a4046272ff60fa74f5a7' }),
383
+ h("div", { key: '4aa7dee532336b084542df0209291b4c60378b49', class: "filter-actions" }, this.disableDynamicFiltering && [
384
+ h("button", { key: '4c1b3054cd1bb7f46877592f00f6634d0f7ecafa', id: "revo-button-save", "aria-label": "save", class: "revo-button green", onClick: () => this.onSave() }, capts.save),
385
+ h("button", { key: 'f31a568c89be18b1a854cdd7d4726e01db24e338', id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, capts.cancel),
386
+ ], !this.disableDynamicFiltering && [
387
+ h("button", { key: '5d40e8b1f13f94cff4f5a2e2aefeee8861104a9d', id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, capts.ok),
388
+ h("button", { key: '67eac3abd16f6f6e2ed7089dcfb0d05524ddb7df', id: "revo-button-reset", "aria-label": "reset", class: "revo-button outline", onClick: () => this.onReset() }, capts.reset),
389
+ ]),
390
+ h("slot", { key: 'b27a9bb3ef814e1e09dca14eda3e332ff34c654c', slot: "footer" }),
391
+ ])));
402
392
  }
403
393
  static get is() { return "revogr-filter-panel"; }
404
394
  static get originalStyleUrls() {
@@ -542,9 +532,7 @@ export class FilterPanel {
542
532
  "currentFilterId": {},
543
533
  "currentFilterType": {},
544
534
  "changes": {},
545
- "filterItems": {},
546
- "draggedFilterId": {},
547
- "dragOverFilterId": {}
535
+ "filterItems": {}
548
536
  };
549
537
  }
550
538
  static get events() {
@@ -178,7 +178,8 @@ export class FilterPlugin extends BasePlugin {
178
178
  async headerclick(e) {
179
179
  var _a, _b;
180
180
  const el = (_a = e.detail.originalEvent) === null || _a === void 0 ? void 0 : _a.target;
181
- if (!isFilterBtn(el)) {
181
+ const filterButton = isFilterBtn(el);
182
+ if (!filterButton) {
182
183
  return;
183
184
  }
184
185
  e.preventDefault();
@@ -192,9 +193,8 @@ export class FilterPlugin extends BasePlugin {
192
193
  return;
193
194
  }
194
195
  // filter button clicked, open filter dialog
195
- const gridPos = this.revogrid.getBoundingClientRect();
196
- const buttonPos = el.getBoundingClientRect();
197
- const data = Object.assign(Object.assign(Object.assign({}, e.detail), this.filterCollection[prop]), { x: buttonPos.x - gridPos.x, y: buttonPos.y - gridPos.y + buttonPos.height, autoCorrect: true, filterTypes: this.getColumnFilter(e.detail.filter), filterItems: this.multiFilterItems, extraContent: this.extraHyperContent, extraBottomContent: this.extraBottomHyperContent });
196
+ const buttonPos = (filterButton instanceof HTMLElement ? filterButton : el).getBoundingClientRect();
197
+ const data = Object.assign(Object.assign(Object.assign({}, e.detail), this.filterCollection[prop]), { x: buttonPos.x, y: buttonPos.y + buttonPos.height, autoCorrect: true, filterTypes: this.getColumnFilter(e.detail.filter), filterItems: this.multiFilterItems, extraContent: this.extraHyperContent });
198
198
  (_b = this.beforeshow) === null || _b === void 0 ? void 0 : _b.call(this, data);
199
199
  this.pop.show(data);
200
200
  }
@@ -36,12 +36,15 @@ revo-grid[theme^=dark] .revo-button.outline {
36
36
  }
37
37
 
38
38
  revogr-filter-panel {
39
- position: absolute;
40
39
  display: block;
40
+ }
41
+
42
+ revogr-filter-panel .filter-panel-dialog {
43
+ position: fixed;
41
44
  top: 0;
42
45
  left: 0;
43
46
  z-index: 100;
44
- max-height: calc(100% - 80px);
47
+ max-height: calc(100vh - 16px);
45
48
  overflow: auto;
46
49
  opacity: 1;
47
50
  transform: none;
@@ -51,23 +54,27 @@ revogr-filter-panel {
51
54
  box-shadow: 0 5px 18px -2px var(--revo-grid-filter-panel-shadow, rgba(0, 0, 0, 0.15));
52
55
  padding: 10px;
53
56
  border-radius: 8px;
57
+ margin: 0;
54
58
  min-width: 220px;
55
59
  text-align: left;
56
60
  animation: revogr-filter-panel-open 140ms cubic-bezier(0.2, 0, 0, 1);
57
61
  }
58
- revogr-filter-panel .filter-holder > div {
62
+ revogr-filter-panel .filter-panel-dialog::backdrop {
63
+ background: transparent;
64
+ }
65
+ revogr-filter-panel .filter-panel-dialog .filter-holder > div {
59
66
  display: flex;
60
67
  flex-direction: column;
61
68
  }
62
- revogr-filter-panel label {
69
+ revogr-filter-panel .filter-panel-dialog label {
63
70
  font-size: 13px;
64
71
  display: block;
65
72
  padding: 8px 0;
66
73
  }
67
- revogr-filter-panel select {
74
+ revogr-filter-panel .filter-panel-dialog select {
68
75
  width: 100%;
69
76
  }
70
- revogr-filter-panel input[type=text] {
77
+ revogr-filter-panel .filter-panel-dialog input[type=text] {
71
78
  border: 0;
72
79
  min-height: 34px;
73
80
  margin: 5px 0;
@@ -77,11 +84,11 @@ revogr-filter-panel input[type=text] {
77
84
  box-sizing: border-box;
78
85
  width: 100%;
79
86
  }
80
- revogr-filter-panel .filter-actions {
87
+ revogr-filter-panel .filter-panel-dialog .filter-actions {
81
88
  text-align: right;
82
89
  margin-right: -5px;
83
90
  }
84
- revogr-filter-panel .filter-actions button {
91
+ revogr-filter-panel .filter-panel-dialog .filter-actions button {
85
92
  margin-top: 10px;
86
93
  margin-right: 5px;
87
94
  }
@@ -97,7 +104,7 @@ revogr-filter-panel .filter-actions button {
97
104
  }
98
105
  }
99
106
  @media (prefers-reduced-motion: reduce) {
100
- revogr-filter-panel {
107
+ revogr-filter-panel .filter-panel-dialog {
101
108
  animation: none;
102
109
  }
103
110
  }
@@ -182,15 +189,9 @@ revogr-filter-panel .filter-actions button {
182
189
  .multi-filter-list div {
183
190
  white-space: nowrap;
184
191
  }
185
- .multi-filter-list .multi-filter-list-row {
186
- display: flex;
187
- align-items: center;
188
- gap: 6px;
189
- }
190
192
  .multi-filter-list .multi-filter-list-action {
191
193
  display: flex;
192
- flex: 0 0 auto;
193
- justify-content: flex-end;
194
+ justify-content: space-between;
194
195
  align-items: center;
195
196
  }
196
197
  .multi-filter-list .and-or-button {
@@ -208,28 +209,6 @@ revogr-filter-panel .filter-actions button {
208
209
  .multi-filter-list .trash-button .trash-img {
209
210
  width: 1em;
210
211
  }
211
- .multi-filter-list .reorder-button {
212
- border: 0;
213
- background: transparent;
214
- color: var(--revo-grid-filter-panel-reorder-color, #6b7280);
215
- cursor: grab;
216
- font-family: monospace;
217
- font-size: 12px;
218
- letter-spacing: 0;
219
- line-height: 1;
220
- padding: 6px 2px;
221
- transform: scaleX(0.8);
222
- width: 16px;
223
- }
224
- .multi-filter-list .reorder-button.filter-row-dragging {
225
- opacity: 0.55;
226
- }
227
- .multi-filter-list .reorder-button.filter-row-drag-over {
228
- color: var(--revo-grid-filter-panel-reorder-accent, #007cb2);
229
- }
230
- .multi-filter-list .reorder-button:active {
231
- cursor: grabbing;
232
- }
233
212
 
234
213
  .add-filter-divider {
235
214
  display: block;
@@ -240,23 +219,6 @@ revogr-filter-panel .filter-actions button {
240
219
 
241
220
  .select-input {
242
221
  display: flex;
222
+ justify-content: space-between;
243
223
  align-items: center;
244
- flex: 1 1 auto;
245
- gap: 6px;
246
- min-width: 0;
247
- }
248
- .select-input .select-filter,
249
- .select-input .filter-extra {
250
- flex: 1 1 0;
251
- min-width: 0;
252
- }
253
- .select-input .filter-extra {
254
- display: flex;
255
- }
256
- .select-input .filter-extra > * {
257
- width: 100%;
258
- }
259
- .select-input input[type=text],
260
- .select-input input[type=date] {
261
- margin: 0;
262
224
  }
@@ -21,17 +21,12 @@ export const GroupingRowRenderer = (props) => {
21
21
  const name = model[PSEUDO_GROUP_ITEM];
22
22
  const expanded = model[GROUP_EXPANDED];
23
23
  const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
24
- const groupRowAttrs = {
25
- rowClass: 'groupingRow',
26
- depth,
27
- expanded,
28
- };
29
24
  if (groupingCustomRenderer) {
30
- return (h(RowRenderer, Object.assign({}, props, groupRowAttrs), h("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(h, Object.assign(Object.assign({}, props), { colType: props.providers.colType, name,
25
+ return (h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }), h("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(h, Object.assign(Object.assign({}, props), { colType: props.providers.colType, name,
31
26
  expanded,
32
27
  depth })))));
33
28
  }
34
- return (h(RowRenderer, Object.assign({}, props, groupRowAttrs), hasExpand && [
29
+ return (h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }), hasExpand && [
35
30
  h("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) }, expandSvgIconVNode(expanded)),
36
31
  name,
37
32
  ]));
@@ -22,17 +22,8 @@ export class ColumnMovePlugin extends BasePlugin {
22
22
  constructor(revogrid, providers) {
23
23
  super(revogrid, providers);
24
24
  this.moveFunc = debounce((e) => this.doMove(e), 5);
25
- this.preventHeaderClickAfterDrag = (event) => {
26
- if (!this.preventNextHeaderClick) {
27
- return;
28
- }
29
- this.preventNextHeaderClick = false;
30
- event.preventDefault();
31
- };
32
25
  this.staticDragData = null;
33
26
  this.dragData = null;
34
- this.columnDragMoved = false;
35
- this.preventNextHeaderClick = false;
36
27
  this.localSubscriptions = {};
37
28
  this.orderUi = new ColumnOrderHandler();
38
29
  revogrid.appendChild(this.orderUi.render());
@@ -51,13 +42,11 @@ export class ColumnMovePlugin extends BasePlugin {
51
42
  callback: (e) => this.move(e),
52
43
  };
53
44
  this.addEventListener(COLUMN_CLICK, ({ detail }) => this.dragStart(detail));
54
- this.revogrid.addEventListener('beforeheaderclick', this.preventHeaderClickAfterDrag, { capture: true });
55
45
  }
56
46
  dragStart({ event, data }) {
57
47
  if (event.defaultPrevented) {
58
48
  return;
59
49
  }
60
- this.preventNextHeaderClick = false;
61
50
  const { defaultPrevented } = dispatch(this.revogrid, COLUMN_DRAG_START_EVENT, data);
62
51
  // check if allowed to drag particulat column
63
52
  if (defaultPrevented) {
@@ -79,8 +68,7 @@ export class ColumnMovePlugin extends BasePlugin {
79
68
  const cols = this.getDimension(data.pin || 'rgCol');
80
69
  const gridRect = this.revogrid.getBoundingClientRect();
81
70
  const elRect = dataEl.getBoundingClientRect();
82
- const startItem = getItemByPosition(cols, getLeftRelative(event.x, gridRect.left, elRect.left - gridRect.left) +
83
- (cols.renderOffset || 0));
71
+ const startItem = getItemByPosition(cols, getLeftRelative(event.x, gridRect.left, elRect.left - gridRect.left) + (cols.renderOffset || 0));
84
72
  this.staticDragData = {
85
73
  startPos: event.x,
86
74
  startItem,
@@ -111,14 +99,10 @@ export class ColumnMovePlugin extends BasePlugin {
111
99
  if (rgCol.itemIndex >= this.staticDragData.cols.count) {
112
100
  return;
113
101
  }
114
- this.orderUi.showHandler(getColumnDragPosition(rgCol, this.staticDragData.startItem, this.staticDragData.cols.renderOffset || 0, dragData.scrollOffset), dragData.gridRect.width);
102
+ this.orderUi.showHandler(rgCol.end - (this.staticDragData.cols.renderOffset || 0) + dragData.scrollOffset, dragData.gridRect.width);
115
103
  }
116
104
  }
117
105
  move(e) {
118
- if (this.staticDragData &&
119
- Math.abs(this.staticDragData.startPos - e.x) > 10) {
120
- this.columnDragMoved = true;
121
- }
122
106
  dispatch(this.revogrid, COLUMN_DRAG_MOVE_EVENT, e);
123
107
  // then do move
124
108
  this.moveFunc(e);
@@ -127,7 +111,6 @@ export class ColumnMovePlugin extends BasePlugin {
127
111
  this.clearOrder();
128
112
  }
129
113
  onMouseUp(e) {
130
- const suppressClick = this.columnDragMoved;
131
114
  // apply new positions
132
115
  if (this.dragData && this.staticDragData) {
133
116
  let relativePos = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);
@@ -150,9 +133,6 @@ export class ColumnMovePlugin extends BasePlugin {
150
133
  }
151
134
  dispatch(this.revogrid, COLUMN_DRAG_END_EVENT, this.getData(this.staticDragData, newItems, source));
152
135
  }
153
- if (suppressClick) {
154
- this.preventNextHeaderClick = !!e.target.closest('revogr-header');
155
- }
156
136
  this.clearOrder();
157
137
  }
158
138
  clearLocalSubscriptions() {
@@ -161,7 +141,6 @@ export class ColumnMovePlugin extends BasePlugin {
161
141
  clearOrder() {
162
142
  this.staticDragData = null;
163
143
  this.dragData = null;
164
- this.columnDragMoved = false;
165
144
  this.clearLocalSubscriptions();
166
145
  this.orderUi.stop(this.revogrid);
167
146
  }
@@ -171,7 +150,6 @@ export class ColumnMovePlugin extends BasePlugin {
171
150
  clearSubscriptions() {
172
151
  super.clearSubscriptions();
173
152
  this.clearLocalSubscriptions();
174
- this.revogrid.removeEventListener('beforeheaderclick', this.preventHeaderClickAfterDrag, { capture: true });
175
153
  }
176
154
  getData({ gridEl, dataEl, pin }, order, source = []) {
177
155
  const gridRect = gridEl.getBoundingClientRect();
@@ -193,9 +171,3 @@ export class ColumnMovePlugin extends BasePlugin {
193
171
  export function getLeftRelative(absoluteX, gridPos, offset) {
194
172
  return absoluteX - gridPos - offset;
195
173
  }
196
- export function getColumnDragPosition(targetItem, startItem, renderOffset, scrollOffset) {
197
- const insertionEdge = startItem.itemIndex > targetItem.itemIndex
198
- ? targetItem.start
199
- : targetItem.end;
200
- return insertionEdge - renderOffset + scrollOffset;
201
- }
@@ -428,7 +428,6 @@ function onLoad() {
428
428
 
429
429
  grid.readonly = false;
430
430
  grid.range = true;
431
- grid.useClipboard = { rangeFill: true };
432
431
  grid.resize = true;
433
432
  grid.filter = true;
434
433
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { h, f as Build } from './index-Chp_81rd.js';
5
5
  import { n as DATA_ROW, w as DRAG_ICON_CLASS, x as DRAGGABLE_CLASS } from './dimension.helpers-CGKwSvw6.js';
6
- import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-C6hByxPy.js';
6
+ import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-CC_SD8W3.js';
7
7
 
8
8
  /**
9
9
  * Renders sorting direction and optional additive sorting rank.
@@ -16,22 +16,9 @@ const SortingSign = ({ column }) => {
16
16
  return (h("span", Object.assign({}, indicatorAttrs), h("i", Object.assign({}, iconAttrs)), (column === null || column === void 0 ? void 0 : column.sortIndex) ? (h("sup", Object.assign({}, orderIndexAttrs), column.sortIndex)) : null));
17
17
  };
18
18
 
19
- var __rest = (undefined && undefined.__rest) || function (s, e) {
20
- var t = {};
21
- for (var p in s)
22
- if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
23
- t[p] = s[p];
24
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
25
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
26
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
27
- t[p[i]] = s[p[i]];
28
- }
29
- return t;
30
- };
31
19
  const PADDING_DEPTH = 10;
32
- const RowRenderer = (_a, cells) => {
33
- var { rowClass, index, size, start, depth, groupingLevel } = _a, attrs = __rest(_a, ["rowClass", "index", "size", "start", "depth", "groupingLevel"]);
34
- const props = Object.assign(Object.assign(Object.assign({}, attrs), { [DATA_ROW]: index }), (typeof groupingLevel === 'number'
20
+ const RowRenderer = ({ rowClass, index, size, start, depth, groupingLevel }, cells) => {
21
+ const props = Object.assign({ [DATA_ROW]: index }, (typeof groupingLevel === 'number'
35
22
  ? { 'data-level': groupingLevel }
36
23
  : {}));
37
24
  return (h("div", Object.assign({}, props, { class: `rgRow ${rowClass || ''}`, style: {
@@ -58,17 +45,12 @@ const GroupingRowRenderer = (props) => {
58
45
  const name = model[PSEUDO_GROUP_ITEM];
59
46
  const expanded = model[GROUP_EXPANDED];
60
47
  const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
61
- const groupRowAttrs = {
62
- rowClass: 'groupingRow',
63
- depth,
64
- expanded,
65
- };
66
48
  if (groupingCustomRenderer) {
67
- return (h(RowRenderer, Object.assign({}, props, groupRowAttrs), h("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(h, Object.assign(Object.assign({}, props), { colType: props.providers.colType, name,
49
+ return (h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }), h("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(h, Object.assign(Object.assign({}, props), { colType: props.providers.colType, name,
68
50
  expanded,
69
51
  depth })))));
70
52
  }
71
- return (h(RowRenderer, Object.assign({}, props, groupRowAttrs), hasExpand && [
53
+ return (h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }), hasExpand && [
72
54
  h("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) }, expandSvgIconVNode(expanded)),
73
55
  name,
74
56
  ]));