@easyquery/ui 7.3.3 → 7.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4714,10 +4714,10 @@ input.eqjs-invalid {
4714
4714
  font-weight: normal;
4715
4715
  font-variant: normal;
4716
4716
  text-transform: none !important;
4717
- line-height: 1!important;
4717
+ line-height: 1 !important;
4718
4718
  font-size: var(--icon-size);
4719
4719
  color: var(--button-text-color);
4720
- text-decoration: none;
4720
+ text-decoration: none !important;
4721
4721
  padding: 0;
4722
4722
  outline: none;
4723
4723
 
@@ -4858,6 +4858,11 @@ input.eqjs-invalid {
4858
4858
  flex-wrap: nowrap;
4859
4859
  }
4860
4860
 
4861
+ .eqjs-qp-valueelement {
4862
+ width: auto;
4863
+ flex-grow: 0;
4864
+ }
4865
+
4861
4866
  .eqjs-qc-attrelement, .eqjs-qp-attrelement, .eqjs-qp-operelement {
4862
4867
  margin-left: 0;
4863
4868
  flex-shrink: 1;
@@ -4961,7 +4966,7 @@ input.eqjs-invalid {
4961
4966
  }
4962
4967
 
4963
4968
  .eqjs-menu-scrollDiv:not(.eqjs-mobile) {
4964
- max-height: 500px;
4969
+ /*max-height: 500px;*/
4965
4970
  }
4966
4971
 
4967
4972
  .eqjs-qc-colelement {
@@ -5099,6 +5104,26 @@ input.eqjs-invalid {
5099
5104
  .eqjs-qc-captionelement input {
5100
5105
  min-width: var(--column-panel-caption-size);
5101
5106
  width: auto;
5107
+ }
5108
+
5109
+ .eqjs-qp-row {
5110
+ padding: 0 10px!important;
5111
+ }
5112
+ .eqjs-qp-condition-buttonsBlock, .eqjs-facets-total-buttons {
5113
+ margin-right: 10px;
5114
+ }
5115
+
5116
+ .eqjs-qp-row.eqjs-mobile {
5117
+ border-style: solid!important;
5118
+ margin: 0 4px;
5119
+ }
5120
+
5121
+ .eqjs-qp-condition-buttonsBlock.eqjs-mobile {
5122
+ top: 0!important;
5123
+ }
5124
+
5125
+ .eqjs-cb-addrow.eqjs-mobile a, .eqjs-sb-addrow.eqjs-mobile a {
5126
+ background: none!important;
5102
5127
  }
5103
5128
  /*setting to all page */
5104
5129
  #eqv-main{
@@ -44,10 +44,10 @@
44
44
  font-weight: normal;
45
45
  font-variant: normal;
46
46
  text-transform: none !important;
47
- line-height: 1!important;
47
+ line-height: 1 !important;
48
48
  font-size: var(--icon-size);
49
49
  color: var(--button-text-color);
50
- text-decoration: none;
50
+ text-decoration: none !important;
51
51
  padding: 0;
52
52
  outline: none;
53
53
 
@@ -188,6 +188,11 @@
188
188
  flex-wrap: nowrap;
189
189
  }
190
190
 
191
+ .eqjs-qp-valueelement {
192
+ width: auto;
193
+ flex-grow: 0;
194
+ }
195
+
191
196
  .eqjs-qc-attrelement, .eqjs-qp-attrelement, .eqjs-qp-operelement {
192
197
  margin-left: 0;
193
198
  flex-shrink: 1;
@@ -291,7 +296,7 @@
291
296
  }
292
297
 
293
298
  .eqjs-menu-scrollDiv:not(.eqjs-mobile) {
294
- max-height: 500px;
299
+ /*max-height: 500px;*/
295
300
  }
296
301
 
297
302
  .eqjs-qc-colelement {
@@ -427,4 +432,24 @@
427
432
  .eqjs-qc-captionelement input {
428
433
  min-width: var(--column-panel-caption-size);
429
434
  width: auto;
435
+ }
436
+
437
+ .eqjs-qp-row {
438
+ padding: 0 10px!important;
439
+ }
440
+ .eqjs-qp-condition-buttonsBlock, .eqjs-facets-total-buttons {
441
+ margin-right: 10px;
442
+ }
443
+
444
+ .eqjs-qp-row.eqjs-mobile {
445
+ border-style: solid!important;
446
+ margin: 0 4px;
447
+ }
448
+
449
+ .eqjs-qp-condition-buttonsBlock.eqjs-mobile {
450
+ top: 0!important;
451
+ }
452
+
453
+ .eqjs-cb-addrow.eqjs-mobile a, .eqjs-sb-addrow.eqjs-mobile a {
454
+ background: none!important;
430
455
  }
@@ -21,11 +21,11 @@ function findHighestZIndex(elem) {
21
21
  }
22
22
  // simetimes setting focus in the main thread doesn't work correctly (in Firefox). So we need to 'hack' it.
23
23
  function safeFocus(element) {
24
- setTimeout(_ => {
25
- if (element) {
26
- element.focus();
24
+ setTimeout((el) => {
25
+ if (el && el.focus) {
26
+ el.focus();
27
27
  }
28
- }, 100);
28
+ }, 100, element);
29
29
  }
30
30
  const eqCssPrefix = 'eqjs';
31
31
  const eqCssMobile = 'eqjs-mobile';
@@ -1434,6 +1434,16 @@ class MenuLevel {
1434
1434
  levelStyle.top = y + 'px';
1435
1435
  this.scrollDiv.style.width = "auto";
1436
1436
  this.scrollDiv.style.height = "auto";
1437
+ if (this.parentMenu.options.useMaxSpace === false) {
1438
+ const winSize = ui.getWinSize().height;
1439
+ if (y > winSize / 2 && this.scrollDiv.scrollHeight > winSize / 2) {
1440
+ this.scrollDiv.style.height = (y - 16 - 56) + 'px';
1441
+ levelStyle.top = 0 + 'px';
1442
+ }
1443
+ else if (this.scrollDiv.scrollHeight > winSize / 2) {
1444
+ this.scrollDiv.style.height = (winSize - y - 56) + 'px';
1445
+ }
1446
+ }
1437
1447
  //adjusting level top position
1438
1448
  if (adjustTopPos) {
1439
1449
  y = this.adjustTopPos(y);
@@ -1468,16 +1478,15 @@ class MenuLevel {
1468
1478
  if (this.closeDiv != null) {
1469
1479
  maxHeight -= this.closeDiv.offsetHeight;
1470
1480
  }
1471
- if (this.levelDiv.offsetHeight > maxHeight) {
1472
- let newHeight = maxHeight;
1473
- if (newHeight < 50) {
1474
- newHeight = 50;
1475
- }
1476
- this.scrollDiv.style.height = newHeight + "px";
1477
- }
1478
- else {
1479
- this.scrollDiv.style.height = "auto";
1480
- }
1481
+ // if (this.levelDiv.offsetHeight > maxHeight) {
1482
+ // let newHeight = maxHeight;
1483
+ // if (newHeight < 50) { newHeight = 50; }
1484
+ //
1485
+ // this.scrollDiv.style.height = newHeight + "px";
1486
+ // }
1487
+ // else {
1488
+ // this.scrollDiv.style.height = "auto";
1489
+ // }
1481
1490
  this.activeItem = null;
1482
1491
  }
1483
1492
  focus() {
@@ -1619,7 +1628,8 @@ class PopupMenu {
1619
1628
  container: document.body,
1620
1629
  domWriteItemsId: false,
1621
1630
  itemRenderedCallback: null,
1622
- showItemIds: false
1631
+ showItemIds: false,
1632
+ useMaxSpace: true,
1623
1633
  };
1624
1634
  if (options) {
1625
1635
  core$1.utils.assign(this.options, options);
@@ -1781,7 +1791,16 @@ class PopupMenu {
1781
1791
  const leftSpace = pos.x + anchorWidth - scroll.left;
1782
1792
  const rightSpace = winSize.width - leftSpace + anchorWidth;
1783
1793
  pos.x += 2;
1784
- this.rootLevel.showAt(pos.x, pos.y, true, true);
1794
+ if (this.options.useMaxSpace === true) {
1795
+ this.rootLevel.showAt(pos.x, pos.y, true, true);
1796
+ }
1797
+ else {
1798
+ // console.log(this.rootLevel.levelDiv)
1799
+ // if (this.rootLevel.levelDiv.scrollHeight > 500 && pos.y > winSize.height / 2) {
1800
+ // pos.y = 0
1801
+ // }
1802
+ this.rootLevel.showAt(pos.x, pos.y, false, true);
1803
+ }
1785
1804
  this.rootLevel.levelDiv.style.width = '';
1786
1805
  this.rootLevel.levelDiv.style.right = '';
1787
1806
  if (!this.rootLevel.levelDiv.style.zIndex) {
@@ -2742,6 +2761,7 @@ class AttrColumnRendererCP extends ColumnRendererCP {
2742
2761
  .title(attrCaption)
2743
2762
  .text(attrCaption) //TO DO:add localization
2744
2763
  .on('click', (ev) => {
2764
+ console.log("columns expression click");
2745
2765
  ev.stopPropagation();
2746
2766
  this.activate();
2747
2767
  this.panel.showEntitiesMenu({
@@ -3407,6 +3427,7 @@ class ColumnsPanel extends core.Widget {
3407
3427
  .attr('href', 'javascript:void(0)')
3408
3428
  .text(core$1.i18n.getText('CmdClickToAddColumn'))
3409
3429
  .on('click', (e) => {
3430
+ console.log("Add new column");
3410
3431
  e.preventDefault();
3411
3432
  this.showEntitiesMenu({
3412
3433
  anchor: e.target,
@@ -7988,7 +8009,8 @@ class QueryPanel extends core.Widget {
7988
8009
  return new PopupMenu(options);
7989
8010
  }
7990
8011
  showEntitiesMenu(options) {
7991
- this.entitiesMenu.showMenu(options);
8012
+ this.entitiesMenu.showMenu(Object.assign({}, this.options.menuOptions, options));
8013
+ // this.entitiesMenu.showMenu(options);
7992
8014
  }
7993
8015
  createConditionMenus() {
7994
8016
  //ConditionMenu
@@ -8285,6 +8307,7 @@ class FilterBar extends core.Widget {
8285
8307
  .text(core$1.i18n.getText('StrNoFilterClickToAdd'))
8286
8308
  .hide()
8287
8309
  .on('click', () => {
8310
+ console.log("condition filter click");
8288
8311
  this.queryPanel.showEntitiesMenu({
8289
8312
  anchor: this.headerLinkElement,
8290
8313
  selectedIds: null,
@@ -8683,9 +8706,10 @@ class EasyGridWidget extends Grid {
8683
8706
  * @param options The options.
8684
8707
  */
8685
8708
  init(context, options) {
8709
+ var _a, _b;
8686
8710
  super.init(context, options);
8687
- const gridOptions = Object.assign(Object.assign({}, options), { slot: this.slot, dataTable: context.resultTable });
8688
- this.options = core$1.utils.assign(this.options, options);
8711
+ const gridOptions = Object.assign(Object.assign(Object.assign(Object.assign({}, (_a = context.options.widgets) === null || _a === void 0 ? void 0 : _a.resultGrid), (_b = context.options.widgets) === null || _b === void 0 ? void 0 : _b.easyGrid), options), { slot: this.slot, dataTable: context.resultTable });
8712
+ this.options = core$1.utils.assign(this.options, gridOptions);
8689
8713
  gridOptions.onPlusButtonClick = (ev) => this.addColumnClickHandler(ev);
8690
8714
  gridOptions.onColumnMoved = (ev) => this.columnMovedHandler(ev);
8691
8715
  if (gridOptions.aggregates) {
@@ -12389,9 +12413,7 @@ class View {
12389
12413
  if (this.context.getQuery().isEmpty() && !this.resultOptions.fetchEmptyQueries)
12390
12414
  return;
12391
12415
  this.showResultSpinner();
12392
- this.context.fetchData({
12393
- elasticPaging: options.elasticPaging,
12394
- success: (result) => {
12416
+ this.context.fetchData(Object.assign(Object.assign({}, options), { elasticPaging: options.elasticPaging, success: (result) => {
12395
12417
  this.hideResultSpinner();
12396
12418
  this.toggleExportButtons();
12397
12419
  this.displayRecordsCount(this.context.resultTable.getTotal());
@@ -12404,11 +12426,9 @@ class View {
12404
12426
  if (options.success) {
12405
12427
  options.success(result);
12406
12428
  }
12407
- },
12408
- error: () => {
12429
+ }, error: () => {
12409
12430
  this.hideResultSpinner();
12410
- }
12411
- });
12431
+ } }));
12412
12432
  }
12413
12433
  toggleExportButtons() {
12414
12434
  if (this.enableExport && this.context.resultTable
@@ -1,6 +1,6 @@
1
1
  import { utils, i18n, DataType, EasyDataTable, AggregationSettings } from '@easydata/core';
2
2
  import { Widget, WidgetGroup, QueryChangePart, QueryChangeAction, ExprTag, SortDirection, i18n as i18n$1, equtils, eqconsts, ConditionPart, DataKind, Query, Expression, CondTag, EqEditorTag, EqValueEditor, EqServiceProvider, createEqContext } from '@easyquery/core';
3
- import { browserUtils, eqDragManager, getElementAbsolutePos, getScrollPos, getWinSize, getViewportSize, domel, DropEffect, createBrowserEvent, DomElementBuilder, DefaultDateTimePicker, slideDown, slideUp, EasyGrid, addCssClass, hideElement, showElement, isVisible, toggleVisibility, addElement, DefaultDialogService } from '@easydata/ui';
3
+ import { browserUtils, eqDragManager, domel, getElementAbsolutePos, getScrollPos, getWinSize, getViewportSize, DropEffect, createBrowserEvent, DomElementBuilder, DefaultDateTimePicker, slideDown, slideUp, EasyGrid, addCssClass, hideElement, showElement, isVisible, toggleVisibility, addElement, DefaultDialogService } from '@easydata/ui';
4
4
 
5
5
  function findHighestZIndex(elem) {
6
6
  let highest = 0;
@@ -19,11 +19,11 @@ function findHighestZIndex(elem) {
19
19
  }
20
20
  // simetimes setting focus in the main thread doesn't work correctly (in Firefox). So we need to 'hack' it.
21
21
  function safeFocus(element) {
22
- setTimeout(_ => {
23
- if (element) {
24
- element.focus();
22
+ setTimeout((el) => {
23
+ if (el && el.focus) {
24
+ el.focus();
25
25
  }
26
- }, 100);
26
+ }, 100, element);
27
27
  }
28
28
  const eqCssPrefix = 'eqjs';
29
29
  const eqCssMobile = 'eqjs-mobile';
@@ -1432,6 +1432,16 @@ class MenuLevel {
1432
1432
  levelStyle.top = y + 'px';
1433
1433
  this.scrollDiv.style.width = "auto";
1434
1434
  this.scrollDiv.style.height = "auto";
1435
+ if (this.parentMenu.options.useMaxSpace === false) {
1436
+ const winSize = getWinSize().height;
1437
+ if (y > winSize / 2 && this.scrollDiv.scrollHeight > winSize / 2) {
1438
+ this.scrollDiv.style.height = (y - 16 - 56) + 'px';
1439
+ levelStyle.top = 0 + 'px';
1440
+ }
1441
+ else if (this.scrollDiv.scrollHeight > winSize / 2) {
1442
+ this.scrollDiv.style.height = (winSize - y - 56) + 'px';
1443
+ }
1444
+ }
1435
1445
  //adjusting level top position
1436
1446
  if (adjustTopPos) {
1437
1447
  y = this.adjustTopPos(y);
@@ -1466,16 +1476,15 @@ class MenuLevel {
1466
1476
  if (this.closeDiv != null) {
1467
1477
  maxHeight -= this.closeDiv.offsetHeight;
1468
1478
  }
1469
- if (this.levelDiv.offsetHeight > maxHeight) {
1470
- let newHeight = maxHeight;
1471
- if (newHeight < 50) {
1472
- newHeight = 50;
1473
- }
1474
- this.scrollDiv.style.height = newHeight + "px";
1475
- }
1476
- else {
1477
- this.scrollDiv.style.height = "auto";
1478
- }
1479
+ // if (this.levelDiv.offsetHeight > maxHeight) {
1480
+ // let newHeight = maxHeight;
1481
+ // if (newHeight < 50) { newHeight = 50; }
1482
+ //
1483
+ // this.scrollDiv.style.height = newHeight + "px";
1484
+ // }
1485
+ // else {
1486
+ // this.scrollDiv.style.height = "auto";
1487
+ // }
1479
1488
  this.activeItem = null;
1480
1489
  }
1481
1490
  focus() {
@@ -1617,7 +1626,8 @@ class PopupMenu {
1617
1626
  container: document.body,
1618
1627
  domWriteItemsId: false,
1619
1628
  itemRenderedCallback: null,
1620
- showItemIds: false
1629
+ showItemIds: false,
1630
+ useMaxSpace: true,
1621
1631
  };
1622
1632
  if (options) {
1623
1633
  utils.assign(this.options, options);
@@ -1779,7 +1789,16 @@ class PopupMenu {
1779
1789
  const leftSpace = pos.x + anchorWidth - scroll.left;
1780
1790
  const rightSpace = winSize.width - leftSpace + anchorWidth;
1781
1791
  pos.x += 2;
1782
- this.rootLevel.showAt(pos.x, pos.y, true, true);
1792
+ if (this.options.useMaxSpace === true) {
1793
+ this.rootLevel.showAt(pos.x, pos.y, true, true);
1794
+ }
1795
+ else {
1796
+ // console.log(this.rootLevel.levelDiv)
1797
+ // if (this.rootLevel.levelDiv.scrollHeight > 500 && pos.y > winSize.height / 2) {
1798
+ // pos.y = 0
1799
+ // }
1800
+ this.rootLevel.showAt(pos.x, pos.y, false, true);
1801
+ }
1783
1802
  this.rootLevel.levelDiv.style.width = '';
1784
1803
  this.rootLevel.levelDiv.style.right = '';
1785
1804
  if (!this.rootLevel.levelDiv.style.zIndex) {
@@ -2740,6 +2759,7 @@ class AttrColumnRendererCP extends ColumnRendererCP {
2740
2759
  .title(attrCaption)
2741
2760
  .text(attrCaption) //TO DO:add localization
2742
2761
  .on('click', (ev) => {
2762
+ console.log("columns expression click");
2743
2763
  ev.stopPropagation();
2744
2764
  this.activate();
2745
2765
  this.panel.showEntitiesMenu({
@@ -3405,6 +3425,7 @@ class ColumnsPanel extends Widget {
3405
3425
  .attr('href', 'javascript:void(0)')
3406
3426
  .text(i18n.getText('CmdClickToAddColumn'))
3407
3427
  .on('click', (e) => {
3428
+ console.log("Add new column");
3408
3429
  e.preventDefault();
3409
3430
  this.showEntitiesMenu({
3410
3431
  anchor: e.target,
@@ -7986,7 +8007,8 @@ class QueryPanel extends Widget {
7986
8007
  return new PopupMenu(options);
7987
8008
  }
7988
8009
  showEntitiesMenu(options) {
7989
- this.entitiesMenu.showMenu(options);
8010
+ this.entitiesMenu.showMenu(Object.assign({}, this.options.menuOptions, options));
8011
+ // this.entitiesMenu.showMenu(options);
7990
8012
  }
7991
8013
  createConditionMenus() {
7992
8014
  //ConditionMenu
@@ -8283,6 +8305,7 @@ class FilterBar extends Widget {
8283
8305
  .text(i18n.getText('StrNoFilterClickToAdd'))
8284
8306
  .hide()
8285
8307
  .on('click', () => {
8308
+ console.log("condition filter click");
8286
8309
  this.queryPanel.showEntitiesMenu({
8287
8310
  anchor: this.headerLinkElement,
8288
8311
  selectedIds: null,
@@ -8681,9 +8704,10 @@ class EasyGridWidget extends Grid {
8681
8704
  * @param options The options.
8682
8705
  */
8683
8706
  init(context, options) {
8707
+ var _a, _b;
8684
8708
  super.init(context, options);
8685
- const gridOptions = Object.assign(Object.assign({}, options), { slot: this.slot, dataTable: context.resultTable });
8686
- this.options = utils.assign(this.options, options);
8709
+ const gridOptions = Object.assign(Object.assign(Object.assign(Object.assign({}, (_a = context.options.widgets) === null || _a === void 0 ? void 0 : _a.resultGrid), (_b = context.options.widgets) === null || _b === void 0 ? void 0 : _b.easyGrid), options), { slot: this.slot, dataTable: context.resultTable });
8710
+ this.options = utils.assign(this.options, gridOptions);
8687
8711
  gridOptions.onPlusButtonClick = (ev) => this.addColumnClickHandler(ev);
8688
8712
  gridOptions.onColumnMoved = (ev) => this.columnMovedHandler(ev);
8689
8713
  if (gridOptions.aggregates) {
@@ -12387,9 +12411,7 @@ class View {
12387
12411
  if (this.context.getQuery().isEmpty() && !this.resultOptions.fetchEmptyQueries)
12388
12412
  return;
12389
12413
  this.showResultSpinner();
12390
- this.context.fetchData({
12391
- elasticPaging: options.elasticPaging,
12392
- success: (result) => {
12414
+ this.context.fetchData(Object.assign(Object.assign({}, options), { elasticPaging: options.elasticPaging, success: (result) => {
12393
12415
  this.hideResultSpinner();
12394
12416
  this.toggleExportButtons();
12395
12417
  this.displayRecordsCount(this.context.resultTable.getTotal());
@@ -12402,11 +12424,9 @@ class View {
12402
12424
  if (options.success) {
12403
12425
  options.success(result);
12404
12426
  }
12405
- },
12406
- error: () => {
12427
+ }, error: () => {
12407
12428
  this.hideResultSpinner();
12408
- }
12409
- });
12429
+ } }));
12410
12430
  }
12411
12431
  toggleExportButtons() {
12412
12432
  if (this.enableExport && this.context.resultTable
@@ -119,6 +119,10 @@ export interface PopupMenuOptions {
119
119
  showSelected?: boolean;
120
120
  /** If true - the menu will show the ID for each item (e.g. {itemId}:{itemText}) */
121
121
  showItemIds?: boolean;
122
+ /**
123
+ * If true, popup use max available space
124
+ */
125
+ useMaxSpace?: boolean;
122
126
  }
123
127
  export declare class PopupMenu {
124
128
  private static lastMenuID;
@@ -1,4 +1,4 @@
1
- import { Widget, EqContext, WidgetGroup, EqServiceProvider } from '@easyquery/core';
1
+ import { Widget, EqContext, WidgetGroup, EqServiceProvider, ContextFetchDataOptions } from '@easyquery/core';
2
2
  import { DialogService } from '@easydata/ui';
3
3
  import { EqViewOptions, EqResultOptions } from './view_options';
4
4
  export declare abstract class View {
@@ -52,7 +52,7 @@ export declare abstract class View {
52
52
  * Fetches the data according to the query and other options defined in the context.
53
53
  * @param options The options.
54
54
  */
55
- fetchData(options?: any): void;
55
+ fetchData(options?: ContextFetchDataOptions): void;
56
56
  protected enableExport: boolean;
57
57
  protected toggleExportButtons(): void;
58
58
  protected enableExportButtons(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easyquery/ui",
3
- "version": "7.3.3",
3
+ "version": "7.3.4",
4
4
  "description": "EasyQuery.JS Community UI widgets",
5
5
  "types": "./dist/types/public_api.d.ts",
6
6
  "main": "./dist/easyquery.ui.cjs.js",
@@ -30,7 +30,7 @@
30
30
  "bugs": "https://korzh.com/support",
31
31
  "license": "LGPL-3.0",
32
32
  "peerDependencies": {
33
- "@easyquery/core": "^7.3.3"
33
+ "@easyquery/core": "^7.3.4"
34
34
  },
35
35
  "files": [
36
36
  "dist",