@refinitiv-ui/efx-grid 6.0.106 → 6.0.108

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. package/lib/core/dist/core.js +162 -59
  2. package/lib/core/dist/core.min.js +1 -1
  3. package/lib/core/es6/grid/Core.d.ts +2 -2
  4. package/lib/core/es6/grid/Core.js +156 -55
  5. package/lib/core/es6/grid/ILayoutGrid.js +1 -1
  6. package/lib/core/es6/grid/components/Scrollbar.js +5 -3
  7. package/lib/filter-dialog/lib/filter-dialog.d.ts +2 -0
  8. package/lib/filter-dialog/lib/filter-dialog.js +23 -1
  9. package/lib/filter-dialog/themes/base-checkbox.less +1 -2
  10. package/lib/filter-dialog/themes/elemental/dark/checkbox-list.js +1 -1
  11. package/lib/filter-dialog/themes/elemental/dark/es5/all-elements.js +1 -1
  12. package/lib/filter-dialog/themes/elemental/light/checkbox-list.js +1 -1
  13. package/lib/filter-dialog/themes/elemental/light/es5/all-elements.js +1 -1
  14. package/lib/filter-dialog/themes/halo/dark/checkbox-list.js +1 -1
  15. package/lib/filter-dialog/themes/halo/dark/es5/all-elements.js +1 -1
  16. package/lib/filter-dialog/themes/halo/light/checkbox-list.js +1 -1
  17. package/lib/filter-dialog/themes/halo/light/es5/all-elements.js +1 -1
  18. package/lib/filter-dialog/themes/solar/charcoal/checkbox-list.js +1 -1
  19. package/lib/filter-dialog/themes/solar/charcoal/es5/all-elements.js +1 -1
  20. package/lib/filter-dialog/themes/solar/pearl/checkbox-list.js +1 -1
  21. package/lib/filter-dialog/themes/solar/pearl/es5/all-elements.js +1 -1
  22. package/lib/formatters/es6/index.d.ts +22 -1
  23. package/lib/formatters/es6/index.js +22 -1
  24. package/lib/grid/index.js +1 -1
  25. package/lib/rt-grid/dist/rt-grid.js +13 -12
  26. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  27. package/lib/rt-grid/es6/FieldDefinition.js +1 -1
  28. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +1452 -1304
  29. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +128 -89
  30. package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +2 -0
  31. package/lib/tr-grid-row-filtering/es6/RowFiltering.js +14 -0
  32. package/lib/tr-grid-util/es6/GroupDefinitions.js +3 -3
  33. package/lib/types/es6/Core/grid/Core.d.ts +2 -2
  34. package/lib/types/es6/RowFiltering.d.ts +2 -0
  35. package/lib/types/es6/SimpleTickerFormatter.d.ts +0 -2
  36. package/lib/versions.json +6 -6
  37. package/package.json +1 -1
@@ -371,8 +371,6 @@ declare class Core extends ElementWrapper {
371
371
 
372
372
  public reserveRightSpace(size: number): boolean;
373
373
 
374
- public getHiddenInput(): Element|null;
375
-
376
374
  public focus(): void;
377
375
 
378
376
  public isBinding(): boolean;
@@ -391,6 +389,8 @@ declare class Core extends ElementWrapper {
391
389
 
392
390
  public isSelectedColumn(colIndex: number): boolean;
393
391
 
392
+ public updateColumnBounds(): void;
393
+
394
394
  public getColumnRect(startColIndex: number, endColIndex: number): any;
395
395
 
396
396
  public getRowRect(startRowIndex: number, endRowIndex: number): any;
@@ -52,6 +52,9 @@ import VirtualizedLayoutGrid from "./VirtualizedLayoutGrid.js";
52
52
  /** @event Core#preForcedUpdate
53
53
  * @ignore
54
54
  */
55
+ /** @event Core#tabNavigation
56
+ * @ignore
57
+ */
55
58
  //#endregion Events
56
59
 
57
60
  /** @private
@@ -62,6 +65,44 @@ import VirtualizedLayoutGrid from "./VirtualizedLayoutGrid.js";
62
65
  let ascNumberSorter = function (a, b) {
63
66
  return a - b;
64
67
  };
68
+ /** @private
69
+ * @return {!Element}
70
+ */
71
+ let _createHiddenInput = function () {
72
+ let hiddenInput = document.createElement("input");
73
+ let styleObj = hiddenInput.style;
74
+ styleObj.position = "absolute";
75
+ styleObj.width = styleObj.height = styleObj.padding = styleObj.border = "0";
76
+ hiddenInput.value = "0";
77
+ return hiddenInput;
78
+ };
79
+ /** @private
80
+ * @param {Object} e
81
+ * @return {boolean}
82
+ */
83
+ let _isTabCommand = function (e) {
84
+ if(e.keyCode === 9) {
85
+ return !e.ctrlKey && !e.altKey && !e.metaKey;
86
+ }
87
+ return false;
88
+ };
89
+ /** @private
90
+ * @param {Element} elem
91
+ * @return {Element}
92
+ */
93
+ let _getActiveElement = function (elem) {
94
+ if(elem) {
95
+ if(elem.getRootNode) {
96
+ let rootNode = elem.getRootNode(); // Get uncomposed root node
97
+ if(rootNode && rootNode !== elem) { // The root node could be the element itself, if it is not attached to the DOM tree
98
+ return rootNode.activeElement || null;
99
+ }
100
+ } else { // Older browser does not support getRootNode
101
+ return document.activeElement;
102
+ }
103
+ }
104
+ return null;
105
+ };
65
106
 
66
107
  /** @constructor
67
108
  * @param {Element=} opt_initializer this can be either element id (string) or DOM element.
@@ -85,6 +126,8 @@ let Core = function (opt_initializer) {
85
126
  _t._onMouseMove = _t._onMouseMove.bind(_t);
86
127
  _t._onRowHightlighted = _t._onRowHightlighted.bind(_t);
87
128
  _t._onGridClicked = _t._onGridClicked.bind(_t);
129
+ _t._onKeyDown = _t._onKeyDown.bind(_t);
130
+ _t._onKeyUp = _t._onKeyUp.bind(_t);
88
131
 
89
132
  _t._onWindowResize = _t._onWindowResize.bind(_t);
90
133
  _t._onSectionDataChanged = _t._onSectionDataChanged.bind(_t);
@@ -105,7 +148,7 @@ let Core = function (opt_initializer) {
105
148
  _t._onColInViewChanged = _t._onColInViewChanged.bind(_t);
106
149
 
107
150
  _t._updateVScrollbar = _t._updateVScrollbar.bind(_t);
108
- _t._updateColumnBounds = _t._updateColumnBounds.bind(_t);
151
+ _t.updateColumnBounds = _t.updateColumnBounds.bind(_t);
109
152
  _t._dispatchColumnPositionChanged = _t._dispatchColumnPositionChanged.bind(_t);
110
153
  _t._dispatchRowPositionChanged = _t._dispatchRowPositionChanged.bind(_t);
111
154
  _t._requestScrollbarUpdate = _t._requestScrollbarUpdate.bind(_t);
@@ -146,7 +189,7 @@ let Core = function (opt_initializer) {
146
189
  // Initialize vertical scrollbar
147
190
  _t._vscrollbar = new VScrollbar();
148
191
  _t._vscrollbar.disable();
149
- _t._vscrollbar.setParent(this.getParent() || this.getElement());
192
+ _t._vscrollbar.setParent(_t.getParent() || _t.getElement());
150
193
 
151
194
  _t._vscrollbar.listen("scroll", _t._onVScroll);
152
195
  _t._vscrollbar.listen("layoutChanged", _t._onVScroll);
@@ -159,25 +202,28 @@ let Core = function (opt_initializer) {
159
202
  // Initialize horizontal scrollbars
160
203
  _t._hscrollbar = new HScrollbar();
161
204
  _t._hscrollbar.disable();
162
- _t._hscrollbar.setParent(this.getParent() || this.getElement());
205
+ _t._hscrollbar.setParent(_t.getParent() || _t.getElement());
163
206
 
164
- _t._hscrollbar.listen("scroll", this._onHScroll);
165
- _t._hscrollbar.listen("layoutChanged", this._onHScroll);
166
- _t._hscrollbar.listen("activated", this.updateLayout);
167
- _t._hscrollbar.listen("deactivated", this.updateLayout);
207
+ _t._hscrollbar.listen("scroll", _t._onHScroll);
208
+ _t._hscrollbar.listen("layoutChanged", _t._onHScroll);
209
+ _t._hscrollbar.listen("activated", _t.updateLayout);
210
+ _t._hscrollbar.listen("deactivated", _t.updateLayout);
168
211
 
169
212
  // cross-reference scrollbars
170
213
  _t._hscrollbar.setOtherScrollbar(_t._vscrollbar);
171
214
  _t._vscrollbar.setOtherScrollbar(_t._hscrollbar);
172
215
 
216
+
217
+ _t._element.addEventListener("keydown", _t._onKeyDown);
218
+ _t._element.addEventListener("keyup", _t._onKeyUp);
173
219
  if (Util.isMobile || Util.isTouchDevice) {
174
- _t._element.addEventListener("touchmove", this._onMouseMove, false);
220
+ _t._element.addEventListener("touchmove", _t._onMouseMove, false);
175
221
  } else {
176
- _t._element.addEventListener("mousemove", this._onMouseMove, false);
222
+ _t._element.addEventListener("mousemove", _t._onMouseMove, false);
177
223
  }
178
224
 
179
225
  if(Util.isSafari){
180
- _t._element.addEventListener("click", this._onGridClicked);
226
+ _t._element.addEventListener("click", _t._onGridClicked);
181
227
  }
182
228
 
183
229
  window.addEventListener("resize", _t._onWindowResize, false); // Should be unlistened after destroyed
@@ -185,10 +231,17 @@ let Core = function (opt_initializer) {
185
231
  _t._colVirtualizer.listen("indexChanged", _t._onColInViewChanged);
186
232
  _t._rowHeightConflator = new Conflator(_t._onRowHeightChanged, 50);
187
233
  _t._vScrollbarConflator = new Conflator(_t._updateVScrollbar, 200);
188
- _t._columnBoundConflator = new Conflator(_t._updateColumnBounds, 10);
234
+ _t._columnBoundConflator = new Conflator(_t.updateColumnBounds, 10);
189
235
  _t._columnPositionConflator = new Conflator(_t._dispatchColumnPositionChanged, 10);
190
236
  _t._rowPositionConflator = new Conflator(_t._dispatchRowPositionChanged, 10);
191
237
 
238
+ _t._firstHiddenInput = _createHiddenInput();
239
+ _t._firstHiddenInput.className = "first-input";
240
+ _t._lastHiddenInput = _createHiddenInput();
241
+ _t._lastHiddenInput.className = "last-input";
242
+ _t._element.insertBefore(_t._firstHiddenInput, _t._element.firstChild);
243
+ _t._element.appendChild(_t._lastHiddenInput);
244
+
192
245
  // Initialize events for external users
193
246
  _t._addEvents(
194
247
  "sectionAdded",
@@ -217,7 +270,8 @@ let Core = function (opt_initializer) {
217
270
  "beforeColumnBoundUpdate",
218
271
  "beforeBatchOperation",
219
272
  "afterBatchOperation",
220
- "pinningChanged"
273
+ "pinningChanged",
274
+ "tabNavigation"
221
275
  );
222
276
 
223
277
  // For debugging in advanced optimization mode
@@ -226,9 +280,9 @@ let Core = function (opt_initializer) {
226
280
  map = {};
227
281
  Core["map"] = map;
228
282
  }
229
- let elem = _t._element;
230
- elem["_control"] = _t;
231
- let id = elem.id || elem.name;
283
+
284
+ _t._element["_control"] = _t;
285
+ let id = _t._element.id || _t._element.name;
232
286
  if(!id || map[id]) {
233
287
  id = "_grid" + Core._runningGridId;
234
288
  }
@@ -236,17 +290,6 @@ let Core = function (opt_initializer) {
236
290
  map[id] = _t;
237
291
  Core._runningGridId++;
238
292
 
239
- // init hiddenInput for retrieve copy and cut event
240
- let hiddenInput = document.createElement("input");
241
- hiddenInput.style.position = "absolute";
242
- hiddenInput.style.width = "0";
243
- hiddenInput.style.height = "0";
244
- hiddenInput.style.padding = "0";
245
- hiddenInput.style.border = "0";
246
- hiddenInput.value = "0";
247
- _t._hiddenInput = hiddenInput;
248
- elem.insertBefore(hiddenInput, elem.firstChild);
249
-
250
293
  // Ensure all affected plugins are loaded prior zoom plugin
251
294
  // use as entity to trigger updateLayout once zoom is changed
252
295
  Object.defineProperty(_t, "zoomFactor", {
@@ -526,11 +569,16 @@ Core.prototype._rowRefreshTimer = 0;
526
569
  * @private
527
570
  */
528
571
  Core.prototype._layoutUpdating = false;
529
- /** A Hidden input that allow to get cut and copy event when user perform cut, copy activities
530
- * @type {Element}
572
+ /** A hidden input that allows grid to receive keyboard input and focus
573
+ * @type {!Element}
574
+ * @private
575
+ */
576
+ Core.prototype._firstHiddenInput;
577
+ /** A hidden input that allows grid to receive keyboard input and focus
578
+ * @type {!Element}
531
579
  * @private
532
580
  */
533
- Core.prototype._hiddenInput;
581
+ Core.prototype._lastHiddenInput;
534
582
  /** @type {number}
535
583
  * @private
536
584
  */
@@ -574,7 +622,7 @@ Core.prototype._hasPendingRowChange = false;
574
622
  * @return {string}
575
623
  */
576
624
  Core.getVersion = function () {
577
- return "5.1.107";
625
+ return "5.1.110";
578
626
  };
579
627
  /** {@link ElementWrapper#dispose}
580
628
  * @override
@@ -635,11 +683,12 @@ Core.prototype.dispose = function () {
635
683
 
636
684
  // Clean Top node
637
685
  let elem = this._element;
638
- if (elem !== null) {
686
+ if (elem) {
639
687
  if (elem["_control"]) {
640
688
  delete elem["_control"];
641
689
  }
642
- elem.removeChild(this._hiddenInput);
690
+ elem.removeChild(this._firstHiddenInput);
691
+ elem.removeChild(this._lastHiddenInput);
643
692
  }
644
693
  this._dispose();
645
694
 
@@ -1804,7 +1853,7 @@ Core.prototype._moveColumn = function (fromCol, destCol) {
1804
1853
  this._colVirtualizer.update();
1805
1854
  }
1806
1855
  }
1807
- this._updateColumnBounds();
1856
+ this.updateColumnBounds();
1808
1857
  this._updateColumnSeparators();
1809
1858
  return true;
1810
1859
  };
@@ -4037,15 +4086,14 @@ Core.prototype.reserveRightSpace = function (size) {
4037
4086
  return false;
4038
4087
  };
4039
4088
 
4040
- /** Get hidden input in grid <br>
4041
- * this input for make grid can copy <br>
4042
- * normal user should not touch it <br>
4043
- * but sometime grid extension will have to use this element
4089
+ /** Get the hidden input. This input allows grid to receive keyboard input
4044
4090
  * @public
4045
- * @return {Element}
4091
+ * @ignore
4092
+ * @param {boolean} firstInput
4093
+ * @return {!Element}
4046
4094
  */
4047
- Core.prototype.getHiddenInput = function () {
4048
- return this._hiddenInput;
4095
+ Core.prototype.getHiddenInput = function (firstInput) {
4096
+ return firstInput ? this._firstHiddenInput : this._lastHiddenInput;
4049
4097
  };
4050
4098
 
4051
4099
  /** Focus grid element without bringing grid into window's view. This is useful when grid is very wide or tall, since window can be scrolled to focused element by default in some browsers.
@@ -4054,8 +4102,8 @@ Core.prototype.getHiddenInput = function () {
4054
4102
  * @see {@link http://help.dottoro.com/ljqmdirr.php}
4055
4103
  */
4056
4104
  Core.prototype.focus = function () {
4057
- let elem = this._hiddenInput;
4058
- let activeElem = document.activeElement;
4105
+ let elem = this._lastHiddenInput;
4106
+ let activeElem = _getActiveElement(elem);
4059
4107
  if(elem && elem !== activeElem) {
4060
4108
  let x = window.pageXOffset;
4061
4109
  let y = window.pageYOffset;
@@ -4186,7 +4234,7 @@ Core.prototype.selectColumn = function (colIndex, selected) {
4186
4234
  for (let i = this._settings.length; --i >= 0; ) {
4187
4235
  this._settings[i].getSection().selectColumn(colIndex, selected);
4188
4236
  }
4189
- this._updateColumnBounds();
4237
+ this.updateColumnBounds();
4190
4238
  };
4191
4239
  /** @public
4192
4240
  * @param {number} colIndex
@@ -4200,9 +4248,9 @@ Core.prototype.isSelectedColumn = function (colIndex) {
4200
4248
  return false;
4201
4249
  };
4202
4250
 
4203
- /** @private
4251
+ /** @public
4204
4252
  */
4205
- Core.prototype._updateColumnBounds = function () {
4253
+ Core.prototype.updateColumnBounds = function () {
4206
4254
  if(this._columnBoundConflator.conflate()) {
4207
4255
  return;
4208
4256
  }
@@ -4689,14 +4737,14 @@ Core.prototype._newSection = function (opt_type, sectionName) {
4689
4737
  Core.prototype._putToLast = function(section) {
4690
4738
  let sectionCount = this._settings.length;
4691
4739
  if (sectionCount === 0) {
4692
- section.setParent(this._element, true);
4740
+ section.insertBefore(this._lastHiddenInput);
4693
4741
  } else {
4694
4742
  let lastGrid = this.getLastSection();
4695
4743
  let nextSibling = lastGrid.getElement().nextSibling;
4696
4744
  if (nextSibling !== null) {
4697
4745
  section.insertBefore(nextSibling);
4698
4746
  } else {
4699
- section.setParent(this._element);
4747
+ section.insertBefore(this._lastHiddenInput);
4700
4748
  }
4701
4749
  }
4702
4750
  };
@@ -5082,7 +5130,7 @@ Core.prototype._onVScroll = function (e) {
5082
5130
  Core.prototype._onHScroll = function (e) {
5083
5131
  let scrollVal = this._hscrollbar.getScrollLeft();
5084
5132
  this._colVirtualizer.setViewOffset(scrollVal); // Trigger virtualization event
5085
- this._updateColumnBounds();
5133
+ this.updateColumnBounds();
5086
5134
  this._dispatchColumnPositionChanged();
5087
5135
  };
5088
5136
  /** @private
@@ -5381,14 +5429,66 @@ Core.prototype._onMouseMove = function () {
5381
5429
  };
5382
5430
  /** @private */
5383
5431
  Core.prototype._onGridClicked = function () {
5384
- // research for dragging
5385
5432
  let selection = window.getSelection();
5386
- if(selection.toString()){
5433
+ if(!selection.toString()){
5434
+ if(!this._element.contains(_getActiveElement(this._element))){
5435
+ this.focus();
5436
+ }
5437
+ }
5438
+ };
5439
+
5440
+ /** @private
5441
+ * @param {Object} e
5442
+ */
5443
+ Core.prototype._onKeyDown = function (e) {
5444
+ if(!_isTabCommand(e)) {
5387
5445
  return;
5388
5446
  }
5389
- let activeElem = document.activeElement;
5390
- if(!this._element.contains(activeElem)){
5391
- this.focus();
5447
+ let activeElement = _getActiveElement(this._element);
5448
+ let onTheEdge = false;
5449
+ if(this._firstHiddenInput === activeElement) {
5450
+ onTheEdge = -1;
5451
+ } else if(this._lastHiddenInput === activeElement) {
5452
+ onTheEdge = 1;
5453
+ }
5454
+
5455
+ this._dispatch("tabNavigation", {
5456
+ "activeElement": activeElement,
5457
+ "firstHiddenInput": this._firstHiddenInput,
5458
+ "lastHiddenInput": this._lastHiddenInput,
5459
+ "onTheEdge": onTheEdge,
5460
+ "shiftKey": e.shiftKey,
5461
+ "event": e
5462
+ });
5463
+
5464
+ if(onTheEdge && !e.defaultPrevented) {
5465
+ if(onTheEdge > 0 && e.shiftKey) {
5466
+ this._firstHiddenInput.focus(); // jump to the top
5467
+ e.preventDefault();
5468
+ } else if(onTheEdge < 0 && !e.shiftKey) {
5469
+ this._lastHiddenInput.focus(); // skip to the end
5470
+ e.preventDefault();
5471
+ }
5472
+ }
5473
+ };
5474
+ /** @private
5475
+ * @param {Object} e
5476
+ */
5477
+ Core.prototype._onKeyUp = function (e) {
5478
+ if(!_isTabCommand(e)) {
5479
+ return;
5480
+ }
5481
+ var activeElem = _getActiveElement(this._element);
5482
+ if(e.shiftKey) {
5483
+ if(activeElem === this._lastHiddenInput) {
5484
+ this._firstHiddenInput.focus();
5485
+ e.preventDefault();
5486
+ }
5487
+ } else {
5488
+ if(activeElem === this._firstHiddenInput) {
5489
+ this._lastHiddenInput.focus();
5490
+ e.preventDefault();
5491
+ }
5392
5492
  }
5393
5493
  };
5394
5494
 
@@ -5571,6 +5671,7 @@ Core.prototype._onSectionCountChanged = function (opt_suppressLayout) {
5571
5671
 
5572
5672
  // Reinsert sections
5573
5673
  this._vscrollbar.setScrollContent(this, this._getAllSections(), this._startVScrollbarIndex);
5674
+ this._element.appendChild(this._lastHiddenInput); // Ensure that the hidden input is always at the last position
5574
5675
 
5575
5676
  if(!opt_suppressLayout) {
5576
5677
  this._updateScrollbarHeight(true, true);
@@ -5588,7 +5689,7 @@ Core.prototype._onColumnCountChanged = function () {
5588
5689
  let pinnedLeft = this._countPinnedLeftColumns();
5589
5690
  let pinnedRight = this._countPinnedRightColumns();
5590
5691
 
5591
- this._updateColumnBounds();
5692
+ this.updateColumnBounds();
5592
5693
  this._updateColumnSeparators();
5593
5694
 
5594
5695
  if (this._hScrollbarEnabled && pinnedLeft + pinnedRight < this.getColumnCount()) {
@@ -5884,7 +5985,7 @@ Core.prototype._syncLayoutToColumns = function (from, to, opt_forceDispatching)
5884
5985
  // TODO: Check if "to" should be greater than or equal to first pinnied right index
5885
5986
  let paneChanged = forceUpdate || (from < this.getHScrollStartIndex()) || (to > this.getFirstPinnedRightIndex());
5886
5987
  this._updateScrollbarWidth(paneChanged, true /* contentChanged */);
5887
- this._updateColumnBounds();
5988
+ this.updateColumnBounds();
5888
5989
  this._updateColumnSeparators();
5889
5990
  this._dispatchColumnPositionChanged();
5890
5991
 
@@ -537,7 +537,7 @@ ILayoutGrid.prototype.setRowOffset = function (index) { };
537
537
  ILayoutGrid.prototype.updateLayout = function () { };
538
538
 
539
539
  /** This will make the specified cell horizontally span to fit entire row regardless of position of the cell -- cell will shift to the left most of the section.<br>
540
- * If opt_noLeftStretching is true, the cell will not extend to the left most position<br>
540
+ * If onlyToTheRight is true, the cell will not extend to the left most position<br>
541
541
  * This is different from cell colSpan, which the cell remain in the same position. tr-stretched class will also be added to the cell
542
542
  * @public
543
543
  * @param {number|Cell} cellRef Either column index or cell reference is acceptable
@@ -375,7 +375,6 @@ Scrollbar.updateTrackThickness = function () {
375
375
 
376
376
  /** @override */
377
377
  Scrollbar.prototype.dispose = function () {
378
-
379
378
  let sbListeners = Scrollbar._listeners;
380
379
  if(sbListeners) {
381
380
  let idx = sbListeners.indexOf(this._onThicknessChanged);
@@ -839,7 +838,7 @@ Scrollbar.prototype._clearAllPanes = function() {
839
838
  */
840
839
  Scrollbar.prototype.disableKeyboardInput = function (opt_disabled) {
841
840
  if(opt_disabled === false) {
842
- this._element.setAttribute("tabindex", "0");
841
+ this._element.setAttribute("tabindex", "-1"); // tabindex makes the element focusable. The negative value exclude it from tab key navigation
843
842
  this._element.addEventListener("keydown", this._onKeyDown, false);
844
843
  } else {
845
844
  this._element.removeAttribute("tabindex");
@@ -1034,8 +1033,11 @@ Scrollbar.prototype._onStartFading = function (e) {
1034
1033
  * @param {Object} e
1035
1034
  */
1036
1035
  Scrollbar.prototype._onTrackScroll = function (e) {
1037
- let tScrollVal = (this._vertical) ? e.target["scrollTop"] : e.target["scrollLeft"];
1036
+ if(!this._element) {
1037
+ return; // Element has been disposed
1038
+ }
1038
1039
 
1040
+ let tScrollVal = (this._vertical) ? e.target["scrollTop"] : e.target["scrollLeft"];
1039
1041
  let pScrollVal = this._convertTrackToPane(tScrollVal);
1040
1042
 
1041
1043
  pScrollVal = this._calcProperScrollValue(pScrollVal);
@@ -27,6 +27,8 @@ declare namespace FilterDialog {
27
27
  sortState?: string|null,
28
28
  sortUI?: boolean|null,
29
29
  filterUI?: boolean|null,
30
+ advancedFilter?: boolean|null,
31
+ compactMode?: boolean|null,
30
32
  blankValues?: (string|boolean)|null,
31
33
  filterChanged?: ((...params: any[]) => any)|null,
32
34
  confirm?: ((...params: any[]) => any)|null,
@@ -25,6 +25,8 @@ import "./checkbox-list.js";
25
25
  * @property {string=} sortState "a" for ascending or "d" for descending
26
26
  * @property {boolean=} sortUI Show Sort area
27
27
  * @property {boolean=} filterUI Show Filter area
28
+ * @property {boolean=} advancedFilter Show advanced tab
29
+ * @property {boolean=} compactMode Force compact mode in dialog
28
30
  * @property {(string|boolean)=} blankValues Display a Blanks item in the filter dialog to represent an empty value. If a string is passed, it will be used as the label for the blank item
29
31
  * @property {Function=} filterChanged Filter changed handler
30
32
  * @property {Function=} confirm Alias of filterChanged
@@ -141,6 +143,7 @@ class FilterDialog extends BasicElement {
141
143
  conditions: {attribute: false},
142
144
  hiddenSortUI: {type: Boolean},
143
145
  hiddenFilterUI: {type: Boolean},
146
+ hiddenAdvancedFilter: {type: Boolean},
144
147
  sortState: {type: String},
145
148
  useUTCTime: {type: Boolean},
146
149
  fieldDataType: {type: String},
@@ -163,11 +166,13 @@ class FilterDialog extends BasicElement {
163
166
  this._translation = translation;
164
167
  this.hiddenSortUI = false;
165
168
  this.hiddenFilterUI = false;
169
+ this.hiddenAdvancedFilter = false;
166
170
  this.isShown = false;
167
171
  this.sortState = "n";
168
172
  this.fieldDataType = "";
169
173
  this._blankValues = false;
170
174
  this._blankValuesChecked = false;
175
+ this._compactMode = false;
171
176
  this.useUTCTime = true;
172
177
  this._popup = new Popup({
173
178
  "shown": this._onPopupShown.bind(this),
@@ -212,10 +217,18 @@ class FilterDialog extends BasicElement {
212
217
  this.hiddenFilterUI = options.filterUI === false;
213
218
  }
214
219
 
220
+ if(options.advancedFilter != null) {
221
+ this.hiddenAdvancedFilter = options.advancedFilter === false;
222
+ }
223
+
215
224
  if(options.blankValues != null ) {
216
225
  this._blankValues = options.blankValues;
217
226
  }
218
227
 
228
+ if(options.compactMode != null) {
229
+ this._compactMode = options.compactMode;
230
+ }
231
+
219
232
  this._blankValuesChecked = false;
220
233
  if(options.blankValuesChecked != null) {
221
234
  this._blankValuesChecked = options.blankValuesChecked;
@@ -409,6 +422,7 @@ class FilterDialog extends BasicElement {
409
422
  // Update Sort UI
410
423
  var isHiddenSortUIChanged = changedProps.has("hiddenSortUI");
411
424
  var isHiddenFilterUIChanged = changedProps.has("hiddenFilterUI");
425
+ var isHiddenAdvancedFilterChanged = changedProps.has("hiddenAdvancedFilter");
412
426
  if (isHiddenSortUIChanged) {
413
427
  let pn = this._sortUI.parentNode;
414
428
  if (this.hiddenSortUI) {
@@ -447,6 +461,10 @@ class FilterDialog extends BasicElement {
447
461
  var isHide = this.hiddenSortUI || this.hiddenFilterUI;
448
462
  this._separator.classList.toggle("hide", isHide);
449
463
  }
464
+ if(isHiddenAdvancedFilterChanged) {
465
+ // TODO: Add class for no advance filter
466
+ this._filterBtns.classList.toggle("hide", this.hiddenAdvancedFilter);
467
+ }
450
468
 
451
469
  if (changedProps.has("isShown")) {
452
470
  if (this.isShown) {
@@ -934,7 +952,11 @@ class FilterDialog extends BasicElement {
934
952
  * @returns {boolean}
935
953
  */
936
954
  _updateDialogHeight() {
937
- this._rootContainer.classList.remove("compact");
955
+ if(!this._compactMode) {
956
+ this._rootContainer.classList.remove("compact");
957
+ } else {
958
+ this._rootContainer.classList.add("compact"); // Compact mode impact height of element, so we need to set it before height changed to calculate exactly height
959
+ }
938
960
  this._rootContainer.style.height = "";
939
961
  this._popup.updatePosition(false); // update position without fallback
940
962
 
@@ -5,8 +5,7 @@
5
5
  }
6
6
  .select-btn {
7
7
  margin-top: 0;
8
- margin-bottom: 0;
9
- border-bottom: none;
8
+ margin-bottom: 4px;
10
9
  }
11
10
 
12
11
  .ie-scrollbars();
@@ -1,4 +1,4 @@
1
1
  import "./imports/native-elements.js";
2
2
 
3
3
 
4
- dispatchEvent(new CustomEvent('ef.customStyles.define', { detail: { name: 'checkbox-list', styles: ':host{display:block;scrollbar-face-color:#3e444f;scrollbar-shadow-color:#3e444f;scrollbar-highlight-color:#3e444f;scrollbar-arrow-color:#3e444f;scrollbar-track-color:#21242a;scrollbar-3dlight-color:#21242a;scrollbar-darkshadow-color:#21242a;scrollbar-color:#3e444f #21242a}:host .hidden{display:none}:host .select-btn{margin-top:0;margin-bottom:0;border-bottom:none}:host #container{border:1px solid #3e444f;overflow-y:auto;min-height:48px;flex-grow:1}:host .item-container{display:flex;width:100%;align-items:center}:host .item-label{margin-left:7px;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .root{display:flex;flex-flow:column;overflow:hidden}::-webkit-scrollbar{width:15px;height:15px}::-webkit-scrollbar-button{background:0 0/1px 2px no-repeat #21242a;height:15px;width:15px;display:block}::-webkit-scrollbar-thumb{background:#3e444f;border-radius:8px;border:2px solid #21242a}::-webkit-scrollbar-thumb:hover{background:#b7bcc6}::-webkit-scrollbar-thumb:active{background:#707a8e}::-webkit-scrollbar-track{background:#21242a}::-webkit-scrollbar-corner{background:#21242a}::-webkit-scrollbar-button:end:decrement,::-webkit-scrollbar-button:start:increment{display:none}::-webkit-scrollbar-button:horizontal{background-size:2px 1px}::-webkit-scrollbar-button:vertical:start:decrement{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:start:decrement:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:start:decrement:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:end:increment{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:vertical:end:increment:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:vertical:end:increment:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:horizontal:start:decrement{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:start:decrement:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:start:decrement:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}' }}));
4
+ dispatchEvent(new CustomEvent('ef.customStyles.define', { detail: { name: 'checkbox-list', styles: ':host{display:block;scrollbar-face-color:#3e444f;scrollbar-shadow-color:#3e444f;scrollbar-highlight-color:#3e444f;scrollbar-arrow-color:#3e444f;scrollbar-track-color:#21242a;scrollbar-3dlight-color:#21242a;scrollbar-darkshadow-color:#21242a;scrollbar-color:#3e444f #21242a}:host .hidden{display:none}:host .select-btn{margin-top:0;margin-bottom:4px}:host #container{border:1px solid #3e444f;overflow-y:auto;min-height:48px;flex-grow:1}:host .item-container{display:flex;width:100%;align-items:center}:host .item-label{margin-left:7px;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .root{display:flex;flex-flow:column;overflow:hidden}::-webkit-scrollbar{width:15px;height:15px}::-webkit-scrollbar-button{background:0 0/1px 2px no-repeat #21242a;height:15px;width:15px;display:block}::-webkit-scrollbar-thumb{background:#3e444f;border-radius:8px;border:2px solid #21242a}::-webkit-scrollbar-thumb:hover{background:#b7bcc6}::-webkit-scrollbar-thumb:active{background:#707a8e}::-webkit-scrollbar-track{background:#21242a}::-webkit-scrollbar-corner{background:#21242a}::-webkit-scrollbar-button:end:decrement,::-webkit-scrollbar-button:start:increment{display:none}::-webkit-scrollbar-button:horizontal{background-size:2px 1px}::-webkit-scrollbar-button:vertical:start:decrement{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:start:decrement:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:start:decrement:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:end:increment{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:vertical:end:increment:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:vertical:end:increment:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:horizontal:start:decrement{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:start:decrement:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:start:decrement:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}' }}));
@@ -1,4 +1,4 @@
1
1
  dispatchEvent(new CustomEvent('ef.customStyles.define', { detail: { name: 'filter-dialog', styles: ':host{display:block}:host *{margin-bottom:0;margin-top:0}:host .compact{padding-top:8px;padding-bottom:8px}:host .compact #filterAdvancedUI,:host .compact #filterValueUI{margin-top:5px}:host .compact #filterValueUI>*+*{margin-top:4px}:host .compact .input-group ef-combo-box+ef-combo-box,:host .compact .input-group ef-combo-box+ef-datetime-picker{margin-top:10px}:host .compact .input-group ef-combo-box+div.radio-group,:host .compact .input-group ef-datetime-picker+div.radio-group{margin-top:6px}:host .compact .input-group div.radio-group+ef-combo-box{margin-top:8px}:host .compact .cancel-ok{margin-top:4px}:host .compact #separator,:host .compact .group-label{display:none}:host ef-panel{box-shadow:0 0 10px rgba(0,0,0,.5);padding-top:17px;padding-bottom:31px;display:block}:host label{line-height:18px;font-size:12px}:host hr{border-top:1px solid;margin-top:9px;margin-bottom:6px;width:100%}:host ef-radio-button{height:18px}:host #filterCoralSplitBtn,:host ef-combo-box,:host ef-input,:host ef-search-field,:host ef-datetime-picker{width:100%}:host ef-radio-group{text-align:center}:host #root_panel{display:flex;flex-direction:column}:host #filterUI{display:flex;flex-direction:column;overflow-y:hidden;flex:1}:host #dataSelector{overflow:hidden;display:flex;flex-direction:column}:host #filterAdvancedUI,:host #filterValueUI{margin-top:19px;display:flex;flex-direction:column;flex:1;overflow:auto}:host #filterValueUI>*+*{margin-top:19px}:host #filterDialogContent{width:243px;display:flex;flex-direction:column;overflow:hidden;flex:1}:host #dataFilter{flex:0 0 auto}:host .group-block>*+*{margin-top:4px}:host .group-block label{display:block}:host .group-filter{overflow:hidden;display:flex;flex-direction:column;flex:1}:host .input-group ef-combo-box+ef-combo-box,:host .input-group ef-combo-box+ef-datetime-picker{margin-top:19px}:host .input-group ef-radio-button+ef-radio-button{margin-left:6px}:host .input-group ef-combo-box+div.radio-group,:host .input-group ef-datetime-picker+div.radio-group{margin-top:13px}:host .input-group div.radio-group+ef-combo-box{margin-top:16px}:host .cancel-ok{text-align:right;margin-top:31px}:host .cancel-ok #cancel_btn{margin-left:12px}:host .cancel-ok #clear_btn{float:left}:host .hide{display:none!important}' }}))
2
2
 
3
- dispatchEvent(new CustomEvent('ef.customStyles.define', { detail: { name: 'checkbox-list', styles: ':host{display:block;scrollbar-face-color:#3e444f;scrollbar-shadow-color:#3e444f;scrollbar-highlight-color:#3e444f;scrollbar-arrow-color:#3e444f;scrollbar-track-color:#21242a;scrollbar-3dlight-color:#21242a;scrollbar-darkshadow-color:#21242a;scrollbar-color:#3e444f #21242a}:host .hidden{display:none}:host .select-btn{margin-top:0;margin-bottom:0;border-bottom:none}:host #container{border:1px solid #3e444f;overflow-y:auto;min-height:48px;flex-grow:1}:host .item-container{display:flex;width:100%;align-items:center}:host .item-label{margin-left:7px;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .root{display:flex;flex-flow:column;overflow:hidden}::-webkit-scrollbar{width:15px;height:15px}::-webkit-scrollbar-button{background:0 0/1px 2px no-repeat #21242a;height:15px;width:15px;display:block}::-webkit-scrollbar-thumb{background:#3e444f;border-radius:8px;border:2px solid #21242a}::-webkit-scrollbar-thumb:hover{background:#b7bcc6}::-webkit-scrollbar-thumb:active{background:#707a8e}::-webkit-scrollbar-track{background:#21242a}::-webkit-scrollbar-corner{background:#21242a}::-webkit-scrollbar-button:end:decrement,::-webkit-scrollbar-button:start:increment{display:none}::-webkit-scrollbar-button:horizontal{background-size:2px 1px}::-webkit-scrollbar-button:vertical:start:decrement{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:start:decrement:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:start:decrement:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:end:increment{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:vertical:end:increment:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:vertical:end:increment:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:horizontal:start:decrement{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:start:decrement:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:start:decrement:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}' }}));
3
+ dispatchEvent(new CustomEvent('ef.customStyles.define', { detail: { name: 'checkbox-list', styles: ':host{display:block;scrollbar-face-color:#3e444f;scrollbar-shadow-color:#3e444f;scrollbar-highlight-color:#3e444f;scrollbar-arrow-color:#3e444f;scrollbar-track-color:#21242a;scrollbar-3dlight-color:#21242a;scrollbar-darkshadow-color:#21242a;scrollbar-color:#3e444f #21242a}:host .hidden{display:none}:host .select-btn{margin-top:0;margin-bottom:4px}:host #container{border:1px solid #3e444f;overflow-y:auto;min-height:48px;flex-grow:1}:host .item-container{display:flex;width:100%;align-items:center}:host .item-label{margin-left:7px;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .root{display:flex;flex-flow:column;overflow:hidden}::-webkit-scrollbar{width:15px;height:15px}::-webkit-scrollbar-button{background:0 0/1px 2px no-repeat #21242a;height:15px;width:15px;display:block}::-webkit-scrollbar-thumb{background:#3e444f;border-radius:8px;border:2px solid #21242a}::-webkit-scrollbar-thumb:hover{background:#b7bcc6}::-webkit-scrollbar-thumb:active{background:#707a8e}::-webkit-scrollbar-track{background:#21242a}::-webkit-scrollbar-corner{background:#21242a}::-webkit-scrollbar-button:end:decrement,::-webkit-scrollbar-button:start:increment{display:none}::-webkit-scrollbar-button:horizontal{background-size:2px 1px}::-webkit-scrollbar-button:vertical:start:decrement{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:start:decrement:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:start:decrement:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:12px 8.5px,11px 7.5px,10px 6.5px,9px 5.5px,8px 4.5px,7px 3.5px,6px 4.5px,5px 5.5px,4px 6.5px,3px 7.5px,2px 8.5px}::-webkit-scrollbar-button:vertical:end:increment{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:vertical:end:increment:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:vertical:end:increment:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:12px 4.5px,11px 5.5px,10px 6.5px,9px 7.5px,8px 8.5px,7px 9.5px,6px 8.5px,5px 7.5px,4px 6.5px,3px 5.5px,2px 4.5px}::-webkit-scrollbar-button:horizontal:start:decrement{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:start:decrement:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:start:decrement:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:8.5px 12px,7.5px 11px,6.5px 10px,5.5px 9px,4.5px 8px,3.5px 7px,4.5px 6px,5.5px 5px,6.5px 4px,7.5px 3px,8.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment{background-image:linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f),linear-gradient(#3e444f,#3e444f);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment:hover{background-image:linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6),linear-gradient(#b7bcc6,#b7bcc6);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}::-webkit-scrollbar-button:horizontal:end:increment:active{background-image:linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e),linear-gradient(#707a8e,#707a8e);background-position:4.5px 12px,5.5px 11px,6.5px 10px,7.5px 9px,8.5px 8px,9.5px 7px,8.5px 6px,7.5px 5px,6.5px 4px,5.5px 3px,4.5px 2px}' }}));
4
4