@easyquery/ui 7.3.0-rc01 → 7.3.0-rc03

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.
@@ -209,10 +209,9 @@
209
209
  }
210
210
 
211
211
  .eqjs-mobile .eqjs-qp-valueelement input[type="text"] {
212
- top: auto;
213
- bottom: auto;
212
+ top: 0;
213
+ bottom: 0;
214
214
  width: 100%;
215
- height: 1.2rem;
216
215
  left: 0;
217
216
  }
218
217
 
@@ -264,4 +263,8 @@
264
263
  height: 22px;
265
264
  }
266
265
 
267
- /* QueryPanel end */
266
+ /* ColumnsPanel end */
267
+
268
+ .eqjs-qp-panel.eqjs-mobile *:focus, .eqjs-qc-panel.eqjs-mobile *:focus, .eqjs-ep-panel.eqjs-mobile *:focus, .eqjs-cb-panel.eqjs-mobile *:focus, .eqjs-grb-panel.eqjs-mobile *:focus {
269
+ border: none;
270
+ }
@@ -198,7 +198,7 @@ body {
198
198
  }
199
199
 
200
200
  .eqjs-qp-condelement {
201
- margin: 5px 8px 0 0;
201
+ margin: 4px 8px 2px 0;
202
202
  padding: 1px;
203
203
  vertical-align: top;
204
204
  font-size: 14px;
@@ -316,7 +316,6 @@ body {
316
316
  overflow: hidden;
317
317
  text-overflow: ellipsis;
318
318
  white-space: nowrap;
319
- display: inline-block;
320
319
  }
321
320
 
322
321
  .eqjs-qp-valueelement input[type="text"]{
@@ -2434,7 +2434,7 @@ body {
2434
2434
  }
2435
2435
 
2436
2436
  .eqjs-qp-condelement {
2437
- margin: 5px 8px 0 0;
2437
+ margin: 4px 8px 2px 0;
2438
2438
  padding: 1px;
2439
2439
  vertical-align: top;
2440
2440
  font-size: 14px;
@@ -2554,7 +2554,6 @@ body {
2554
2554
  overflow: hidden;
2555
2555
  text-overflow: ellipsis;
2556
2556
  white-space: nowrap;
2557
- display: inline-block;
2558
2557
  }
2559
2558
 
2560
2559
  .eqjs-qp-valueelement input[type="text"]{
@@ -3980,10 +3979,9 @@ input.eqjs-invalid {
3980
3979
  }
3981
3980
 
3982
3981
  .eqjs-mobile .eqjs-qp-valueelement input[type="text"] {
3983
- top: auto;
3984
- bottom: auto;
3982
+ top: 0;
3983
+ bottom: 0;
3985
3984
  width: 100%;
3986
- height: 1.2rem;
3987
3985
  left: 0;
3988
3986
  }
3989
3987
 
@@ -4035,7 +4033,12 @@ input.eqjs-invalid {
4035
4033
  height: 22px;
4036
4034
  }
4037
4035
 
4038
- /* QueryPanel end */
4036
+ /* ColumnsPanel end */
4037
+
4038
+ .eqjs-qp-panel.eqjs-mobile *:focus, .eqjs-qc-panel.eqjs-mobile *:focus, .eqjs-ep-panel.eqjs-mobile *:focus, .eqjs-cb-panel.eqjs-mobile *:focus, .eqjs-grb-panel.eqjs-mobile *:focus {
4039
+ border: none;
4040
+ }
4041
+
4039
4042
  /* EasyChart START */
4040
4043
 
4041
4044
  .eqjs-chart-header {
@@ -4630,7 +4633,8 @@ input.eqjs-invalid {
4630
4633
  /* AggregationBar Widget END */
4631
4634
 
4632
4635
  :root {
4633
- --column-panel-expr-block-size: 180px;
4636
+ --column-panel-expr-block-size: 220px;
4637
+ --column-panel-attr-size: 100px;
4634
4638
  --column-panel-caption-size: 100px;
4635
4639
  --tool-button-width: 22px;
4636
4640
  --tool-button-height: 22px;
@@ -4641,18 +4645,17 @@ input.eqjs-invalid {
4641
4645
  .eqjs-qp-condition-buttonsBlock {
4642
4646
  background-color: var(--button-block-background);
4643
4647
  border-radius: 0;
4644
- padding: 0 4px;
4648
+ padding: 0;
4645
4649
  position: absolute;
4646
4650
  right: 0;
4647
- top: 1px;
4648
4651
  display: flex;
4649
4652
  align-items: center;
4650
- justify-content: space-between;
4653
+ justify-content: flex-end;
4651
4654
  /*border: 1px solid red;*/
4655
+ top: 4px;
4652
4656
  }
4653
4657
 
4654
4658
  .eqjs-qp-condition-buttonsBlock {
4655
- top: 4px;
4656
4659
  }
4657
4660
 
4658
4661
  .eqjs-qc-column-checkbox:hover,
@@ -4741,9 +4744,10 @@ input.eqjs-invalid {
4741
4744
  .eqjs-qc-row,
4742
4745
  .eqjs-qp-row {
4743
4746
  display: flex;
4747
+ align-items: center;
4744
4748
  flex-wrap: wrap;
4745
4749
  min-height: auto;
4746
- line-height: 1.4;
4750
+ /*line-height: 1.4;*/
4747
4751
  overflow: hidden;
4748
4752
  flex-shrink: 0;
4749
4753
  }
@@ -4772,41 +4776,88 @@ input.eqjs-invalid {
4772
4776
  visibility: hidden;
4773
4777
  }
4774
4778
 
4779
+ .eqjs-buttons-in-block-1.eqjs-qc-row[data-show-buttons] {padding-right: calc(var(--tool-button-width) * 1 + 2px);}
4780
+ .eqjs-buttons-in-block-2.eqjs-qc-row[data-show-buttons] {padding-right: calc(var(--tool-button-width) * 2 + 2px);}
4781
+ .eqjs-buttons-in-block-3.eqjs-qc-row[data-show-buttons] {padding-right: calc(var(--tool-button-width) * 3 + 2px);}
4782
+ .eqjs-buttons-in-block-4.eqjs-qc-row[data-show-buttons] {padding-right: calc(var(--tool-button-width) * 4 + 2px);}
4783
+ .eqjs-buttons-in-block-5.eqjs-qc-row[data-show-buttons] {padding-right: calc(var(--tool-button-width) * 5 + 2px);}
4784
+
4775
4785
  .eqjs-qc-row.eqjs-qc-disabled[data-show-buttons] {
4776
4786
  padding-right: 60px!important;
4777
4787
  }
4778
4788
 
4779
- .eqjs-qc-row[data-show-buttons] {
4789
+
4790
+ .eqjs-qc-header {
4780
4791
  padding-right: 100px;
4781
4792
  }
4782
4793
 
4794
+ .eqjs-qc-header.eqjs-no-buttons {
4795
+ padding-right: 0;
4796
+ }
4797
+
4798
+
4783
4799
  .eqjs-qc-expr-block {
4784
4800
  flex-basis: var(--column-panel-expr-block-size);
4785
- min-width: var(--column-panel-expr-block-size);
4801
+ min-width: var(--column-panel-attr-size);
4786
4802
  white-space: nowrap;
4787
4803
  margin-left: 10px;
4788
4804
  flex-shrink: 1;
4789
4805
  overflow: hidden;
4806
+ height: 100%;
4807
+ display: flex;
4808
+ align-items: center;
4809
+ justify-content: flex-start;
4810
+ }
4811
+
4812
+ .eqjs-qc-expr-block > * {
4813
+ margin: 0 2px!important;
4790
4814
  }
4791
4815
 
4792
4816
  .eqjs-qc-expr-block a, .eqjs-qc-expr-block a:hover {
4793
4817
  border-bottom: none;
4794
4818
  }
4795
4819
 
4796
- .eqjs-qc-captionelement {
4820
+ .eqjs-qc-captionelement, .eqjs-qp-valueelement {
4797
4821
  margin-left: 10px;
4798
4822
  flex-shrink: 1;
4799
4823
  flex-grow: 1;
4800
4824
  width: var(--column-panel-caption-size);
4801
4825
  min-width: 0;
4802
4826
  overflow: hidden;
4827
+ height: 100%;
4828
+ display: flex;
4829
+ align-items: center;
4830
+ flex-wrap: nowrap;
4803
4831
  }
4804
4832
 
4805
- .eqjs-qc-captionelement a {
4833
+ .eqjs-qc-attrelement, .eqjs-qp-attrelement, .eqjs-qp-operelement {
4834
+ margin-left: 0;
4835
+ flex-shrink: 1;
4836
+ flex-grow: 1;
4837
+ min-width: 0;
4838
+ overflow: hidden;
4839
+ height: 100%;
4840
+ display: flex;
4841
+ align-items: center;
4842
+ flex-wrap: nowrap;
4843
+ width: var(--column-panel-attr-size);
4844
+ flex-basis: var(--column-panel-expr-block-size);
4845
+ }
4846
+
4847
+ .eqjs-qc-captionelement a,
4848
+ .eqjs-qc-captionelement span,
4849
+ .eqjs-qc-attrelement a,
4850
+ .eqjs-qp-attrelement a,
4851
+ .eqjs-qp-valueelement a,
4852
+ .eqjs-qp-operelement a
4853
+ {
4806
4854
  white-space: nowrap;
4807
4855
  overflow: hidden;
4808
4856
  text-overflow: ellipsis;
4809
- display: inline-block;
4857
+ display: block;
4858
+ align-items: center;
4859
+ border: 1px solid transparent;
4860
+ padding: 0 2px;
4810
4861
  }
4811
4862
 
4812
4863
  .eqjs-qc-captionelement a, .eqjs-qc-captionelement a:hover {
@@ -4825,13 +4876,12 @@ input.eqjs-invalid {
4825
4876
 
4826
4877
  .eqjs-qc-sortbutton-placeholder {
4827
4878
  left: 24px;
4828
- top: 1px;
4879
+ top: 3px;
4829
4880
  }
4830
4881
 
4831
4882
  .eqjs-button-placeholder {
4832
4883
  width: var(--tool-button-width);
4833
4884
  height: var(--tool-button-height);
4834
- margin: 2px;
4835
4885
  }
4836
4886
 
4837
4887
  .eqjs-button-placeholder:hover,
@@ -4858,13 +4908,6 @@ input.eqjs-invalid {
4858
4908
  overflow: hidden;
4859
4909
  }
4860
4910
 
4861
- .eqjs-qc-header {
4862
- padding-right: 100px;
4863
- }
4864
-
4865
- .eqjs-qc-header.eqjs-no-buttons {
4866
- padding-right: 0;
4867
- }
4868
4911
 
4869
4912
  .eqjs-qc-header-expression {
4870
4913
  margin-left: 20px;
@@ -4875,8 +4918,8 @@ input.eqjs-invalid {
4875
4918
  .eqjs-qc-header-title {
4876
4919
  flex-shrink: 0;
4877
4920
  flex-grow: 1;
4878
- width: calc(var(--column-panel-caption-size) + 24px);
4879
- margin-left: 10px;
4921
+ width: var(--column-panel-caption-size);
4922
+ margin-left: 2px;
4880
4923
  display: inline-block;
4881
4924
  }
4882
4925
 
@@ -4893,10 +4936,55 @@ input.eqjs-invalid {
4893
4936
  max-height: 250px;
4894
4937
  }
4895
4938
 
4896
- .eqjs-button {
4897
- /*border: 1px solid red;*/
4939
+ .eqjs-qc-colelement {
4940
+ margin: 0;
4941
+ }
4942
+
4943
+ .eqjs-qc-captionelement {
4944
+ padding: 0!important;
4898
4945
  }
4899
4946
 
4947
+ .eqjs-qc-captionelement a, .eqjs-qc-expr-block > div {
4948
+ height: 18px;
4949
+ }
4950
+
4951
+ .eqjs-qc-captionelement a {
4952
+ top: -1px;
4953
+ }
4954
+
4955
+ .eqjs-qp-row {
4956
+ padding-right: 66px;
4957
+ flex-wrap: nowrap;
4958
+ /*min-width: 360px;*/
4959
+ }
4960
+
4961
+ .eqjs-qp-attrelement {
4962
+ max-width: 180px;
4963
+ }
4964
+
4965
+ .eqjs-qp-valueelement {
4966
+ min-width: 50px!important;
4967
+ }
4968
+
4969
+ .eqjs-qp-operelement {
4970
+ max-width: 80px;
4971
+ min-width: 50px!important;
4972
+ }
4973
+
4974
+ .eqjs-qp-disabled span, .eqjs-qc-disabled span {
4975
+ margin-bottom: 0;
4976
+ }
4977
+
4978
+ /* Debug styles */
4979
+
4980
+ /*.eqjs-qc-row {*/
4981
+ /* border: 1px solid blue;*/
4982
+ /*}*/
4983
+
4984
+ /*.eqjs-qc-expr-block a, .eqjs-qc-captionelement a {*/
4985
+ /* border: 1px solid red!important;*/
4986
+ /*}*/
4987
+
4900
4988
  /* Mobile */
4901
4989
  .eqjs-qc-row.eqjs-mobile, .eqjs-qp-row.eqjs-mobile {
4902
4990
  padding: 4px 8px;
@@ -1,5 +1,6 @@
1
1
  :root {
2
- --column-panel-expr-block-size: 180px;
2
+ --column-panel-expr-block-size: 220px;
3
+ --column-panel-attr-size: 100px;
3
4
  --column-panel-caption-size: 100px;
4
5
  --tool-button-width: 22px;
5
6
  --tool-button-height: 22px;
@@ -10,18 +11,17 @@
10
11
  .eqjs-qp-condition-buttonsBlock {
11
12
  background-color: var(--button-block-background);
12
13
  border-radius: 0;
13
- padding: 0 4px;
14
+ padding: 0;
14
15
  position: absolute;
15
16
  right: 0;
16
- top: 1px;
17
17
  display: flex;
18
18
  align-items: center;
19
- justify-content: space-between;
19
+ justify-content: flex-end;
20
20
  /*border: 1px solid red;*/
21
+ top: 4px;
21
22
  }
22
23
 
23
24
  .eqjs-qp-condition-buttonsBlock {
24
- top: 4px;
25
25
  }
26
26
 
27
27
  .eqjs-qc-column-checkbox:hover,
@@ -110,9 +110,10 @@
110
110
  .eqjs-qc-row,
111
111
  .eqjs-qp-row {
112
112
  display: flex;
113
+ align-items: center;
113
114
  flex-wrap: wrap;
114
115
  min-height: auto;
115
- line-height: 1.4;
116
+ /*line-height: 1.4;*/
116
117
  overflow: hidden;
117
118
  flex-shrink: 0;
118
119
  }
@@ -141,41 +142,88 @@
141
142
  visibility: hidden;
142
143
  }
143
144
 
145
+ .eqjs-buttons-in-block-1.eqjs-qc-row[data-show-buttons] {padding-right: calc(var(--tool-button-width) * 1 + 2px);}
146
+ .eqjs-buttons-in-block-2.eqjs-qc-row[data-show-buttons] {padding-right: calc(var(--tool-button-width) * 2 + 2px);}
147
+ .eqjs-buttons-in-block-3.eqjs-qc-row[data-show-buttons] {padding-right: calc(var(--tool-button-width) * 3 + 2px);}
148
+ .eqjs-buttons-in-block-4.eqjs-qc-row[data-show-buttons] {padding-right: calc(var(--tool-button-width) * 4 + 2px);}
149
+ .eqjs-buttons-in-block-5.eqjs-qc-row[data-show-buttons] {padding-right: calc(var(--tool-button-width) * 5 + 2px);}
150
+
144
151
  .eqjs-qc-row.eqjs-qc-disabled[data-show-buttons] {
145
152
  padding-right: 60px!important;
146
153
  }
147
154
 
148
- .eqjs-qc-row[data-show-buttons] {
155
+
156
+ .eqjs-qc-header {
149
157
  padding-right: 100px;
150
158
  }
151
159
 
160
+ .eqjs-qc-header.eqjs-no-buttons {
161
+ padding-right: 0;
162
+ }
163
+
164
+
152
165
  .eqjs-qc-expr-block {
153
166
  flex-basis: var(--column-panel-expr-block-size);
154
- min-width: var(--column-panel-expr-block-size);
167
+ min-width: var(--column-panel-attr-size);
155
168
  white-space: nowrap;
156
169
  margin-left: 10px;
157
170
  flex-shrink: 1;
158
171
  overflow: hidden;
172
+ height: 100%;
173
+ display: flex;
174
+ align-items: center;
175
+ justify-content: flex-start;
176
+ }
177
+
178
+ .eqjs-qc-expr-block > * {
179
+ margin: 0 2px!important;
159
180
  }
160
181
 
161
182
  .eqjs-qc-expr-block a, .eqjs-qc-expr-block a:hover {
162
183
  border-bottom: none;
163
184
  }
164
185
 
165
- .eqjs-qc-captionelement {
186
+ .eqjs-qc-captionelement, .eqjs-qp-valueelement {
166
187
  margin-left: 10px;
167
188
  flex-shrink: 1;
168
189
  flex-grow: 1;
169
190
  width: var(--column-panel-caption-size);
170
191
  min-width: 0;
171
192
  overflow: hidden;
193
+ height: 100%;
194
+ display: flex;
195
+ align-items: center;
196
+ flex-wrap: nowrap;
172
197
  }
173
198
 
174
- .eqjs-qc-captionelement a {
199
+ .eqjs-qc-attrelement, .eqjs-qp-attrelement, .eqjs-qp-operelement {
200
+ margin-left: 0;
201
+ flex-shrink: 1;
202
+ flex-grow: 1;
203
+ min-width: 0;
204
+ overflow: hidden;
205
+ height: 100%;
206
+ display: flex;
207
+ align-items: center;
208
+ flex-wrap: nowrap;
209
+ width: var(--column-panel-attr-size);
210
+ flex-basis: var(--column-panel-expr-block-size);
211
+ }
212
+
213
+ .eqjs-qc-captionelement a,
214
+ .eqjs-qc-captionelement span,
215
+ .eqjs-qc-attrelement a,
216
+ .eqjs-qp-attrelement a,
217
+ .eqjs-qp-valueelement a,
218
+ .eqjs-qp-operelement a
219
+ {
175
220
  white-space: nowrap;
176
221
  overflow: hidden;
177
222
  text-overflow: ellipsis;
178
- display: inline-block;
223
+ display: block;
224
+ align-items: center;
225
+ border: 1px solid transparent;
226
+ padding: 0 2px;
179
227
  }
180
228
 
181
229
  .eqjs-qc-captionelement a, .eqjs-qc-captionelement a:hover {
@@ -194,13 +242,12 @@
194
242
 
195
243
  .eqjs-qc-sortbutton-placeholder {
196
244
  left: 24px;
197
- top: 1px;
245
+ top: 3px;
198
246
  }
199
247
 
200
248
  .eqjs-button-placeholder {
201
249
  width: var(--tool-button-width);
202
250
  height: var(--tool-button-height);
203
- margin: 2px;
204
251
  }
205
252
 
206
253
  .eqjs-button-placeholder:hover,
@@ -227,13 +274,6 @@
227
274
  overflow: hidden;
228
275
  }
229
276
 
230
- .eqjs-qc-header {
231
- padding-right: 100px;
232
- }
233
-
234
- .eqjs-qc-header.eqjs-no-buttons {
235
- padding-right: 0;
236
- }
237
277
 
238
278
  .eqjs-qc-header-expression {
239
279
  margin-left: 20px;
@@ -244,8 +284,8 @@
244
284
  .eqjs-qc-header-title {
245
285
  flex-shrink: 0;
246
286
  flex-grow: 1;
247
- width: calc(var(--column-panel-caption-size) + 24px);
248
- margin-left: 10px;
287
+ width: var(--column-panel-caption-size);
288
+ margin-left: 2px;
249
289
  display: inline-block;
250
290
  }
251
291
 
@@ -262,10 +302,55 @@
262
302
  max-height: 250px;
263
303
  }
264
304
 
265
- .eqjs-button {
266
- /*border: 1px solid red;*/
305
+ .eqjs-qc-colelement {
306
+ margin: 0;
307
+ }
308
+
309
+ .eqjs-qc-captionelement {
310
+ padding: 0!important;
311
+ }
312
+
313
+ .eqjs-qc-captionelement a, .eqjs-qc-expr-block > div {
314
+ height: 18px;
267
315
  }
268
316
 
317
+ .eqjs-qc-captionelement a {
318
+ top: -1px;
319
+ }
320
+
321
+ .eqjs-qp-row {
322
+ padding-right: 66px;
323
+ flex-wrap: nowrap;
324
+ /*min-width: 360px;*/
325
+ }
326
+
327
+ .eqjs-qp-attrelement {
328
+ max-width: 180px;
329
+ }
330
+
331
+ .eqjs-qp-valueelement {
332
+ min-width: 50px!important;
333
+ }
334
+
335
+ .eqjs-qp-operelement {
336
+ max-width: 80px;
337
+ min-width: 50px!important;
338
+ }
339
+
340
+ .eqjs-qp-disabled span, .eqjs-qc-disabled span {
341
+ margin-bottom: 0;
342
+ }
343
+
344
+ /* Debug styles */
345
+
346
+ /*.eqjs-qc-row {*/
347
+ /* border: 1px solid blue;*/
348
+ /*}*/
349
+
350
+ /*.eqjs-qc-expr-block a, .eqjs-qc-captionelement a {*/
351
+ /* border: 1px solid red!important;*/
352
+ /*}*/
353
+
269
354
  /* Mobile */
270
355
  .eqjs-qc-row.eqjs-mobile, .eqjs-qp-row.eqjs-mobile {
271
356
  padding: 4px 8px;
@@ -1992,13 +1992,15 @@ class ColumnRendererCP {
1992
1992
  //start sort button
1993
1993
  .addChild('div', builder => builder
1994
1994
  .addClass(`${eqCssPrefix}-button-placeholder`, `${this.cssPrefix}-button-placeholder`, `${this.cssPrefix}-colelement`, `${this.cssPrefix}-sortbutton-placeholder`)
1995
- .addChildElement(this.sortingButton))
1996
- // end sort button
1997
- .addChildElement(this.renderExpressionBlock());
1995
+ .addChildElement(this.sortingButton));
1996
+ // end sort button
1997
+ builder.addChildElement(this.renderExpressionBlock());
1998
1998
  if (this.panel.options.showColumnTitles !== false && !ui.browserUtils.isMobileMode()) {
1999
1999
  builder
2000
2000
  .addChildElement(this.renderCaptionBlock());
2001
2001
  }
2002
+ let buttonsIndex = 0;
2003
+ let buttonsList = '';
2002
2004
  builder
2003
2005
  //start buttons
2004
2006
  .addChild('div', builder => {
@@ -2008,30 +2010,42 @@ class ColumnRendererCP {
2008
2010
  //start enable button
2009
2011
  if (this.getButtonsToShow().indexOf("enable") >= 0 && !this.column.isReadOnly()) {
2010
2012
  builder.addChildElement(this.renderEnabledButton());
2013
+ buttonsIndex++;
2014
+ buttonsList += 'Enable';
2011
2015
  }
2012
2016
  //end enable button
2013
2017
  //start aggr func button
2014
2018
  if (this.getButtonsToShow().indexOf("type") >= 0 && this.columnEnabled) {
2015
2019
  builder.addChildElement(this.renderColumnTypeButton());
2020
+ buttonsIndex++;
2021
+ buttonsList += 'Type';
2016
2022
  }
2017
2023
  //end aggr func button
2018
2024
  //start format selector button
2019
2025
  if (this.getButtonsToShow().indexOf("format") >= 0 && this.columnEnabled) {
2020
2026
  builder.addChildElement(this.renderColumnFormatButton());
2027
+ buttonsIndex++;
2028
+ buttonsList += 'Format';
2021
2029
  }
2022
2030
  //end format selector button
2023
2031
  //start delete button
2024
2032
  if (this.getButtonsToShow().indexOf("delete") >= 0 && !this.column.isReadOnly()) {
2025
2033
  builder.addChildElement(this.renderDeleteButton());
2034
+ buttonsIndex++;
2035
+ buttonsList += 'Delete';
2026
2036
  }
2027
2037
  //end delete button
2028
2038
  //start menu button
2029
2039
  if (this.getButtonsToShow().indexOf("menu") >= 0 && !this.column.isReadOnly()) {
2030
2040
  builder.addChildElement(this.renderMenuButton());
2041
+ buttonsIndex++;
2042
+ buttonsList += 'Menu';
2031
2043
  }
2032
2044
  //end menu button
2033
2045
  });
2034
2046
  //end buttons
2047
+ builder.addClass(`eqjs-buttons-in-block-${buttonsIndex}`);
2048
+ builder.addClass(`eqjs-buttons-in-block-${buttonsList}`);
2035
2049
  if (!ui.browserUtils.isMobileMode()) {
2036
2050
  //start event listeners
2037
2051
  builder
@@ -2053,12 +2067,15 @@ class ColumnRendererCP {
2053
2067
  }
2054
2068
  onMouseClick(ev) {
2055
2069
  ev.stopPropagation();
2070
+ this.activate();
2071
+ return false;
2072
+ }
2073
+ activate() {
2056
2074
  this.panel.toggleColumnPicked(this.column);
2057
2075
  this.adjustButtonsVisibility();
2058
2076
  if (!ui.browserUtils.isMobileMode()) {
2059
2077
  this.element.dispatchEvent(ui.createBrowserEvent("mouseenter"));
2060
2078
  }
2061
- return false;
2062
2079
  }
2063
2080
  fireColumnChanged() {
2064
2081
  this.column.fireChangedEvent();
@@ -2078,6 +2095,7 @@ class ColumnRendererCP {
2078
2095
  .text(this.column.caption)
2079
2096
  .on('click', (ev) => {
2080
2097
  ev.stopPropagation();
2098
+ this.activate();
2081
2099
  const element = ev.target;
2082
2100
  const inputEl = element.parentElement.querySelector('input');
2083
2101
  if (inputEl) {
@@ -2152,7 +2170,7 @@ class ColumnRendererCP {
2152
2170
  sortButtonDirectionCssClass = `${sortButtonCssClass}-none`;
2153
2171
  break;
2154
2172
  }
2155
- if (!this.isEditable()) {
2173
+ if (!this.isEditable() || ui.browserUtils.isMobileMode()) {
2156
2174
  if (sorting === core.SortDirection.Ascending
2157
2175
  || sorting === core.SortDirection.Descending)
2158
2176
  return ui.domel('div')
@@ -2168,11 +2186,12 @@ class ColumnRendererCP {
2168
2186
  .attr('tabIndex', '0')
2169
2187
  .on('click', (ev) => {
2170
2188
  ev.stopPropagation();
2189
+ this.activate();
2171
2190
  this.keepShowingButtons = true;
2172
2191
  const menu = this.getUIS() ? this.panel.sortMenu || this.panel.moveMenu : this.panel.moveMenu;
2173
2192
  menu.showMenu({
2174
2193
  anchor: this.sortingButton,
2175
- selectedIds: this.column.isHidden() ? ['IsHidden'] : null,
2194
+ selectedIds: this.getButtonMenuSelectedItems(), // this.column.isHidden() ? ['IsHidden'] : null,
2176
2195
  itemSelectedCallback: (data, items) => {
2177
2196
  let action;
2178
2197
  switch (data.id) {
@@ -2285,6 +2304,7 @@ class ColumnRendererCP {
2285
2304
  .attr('tabIndex', '0')
2286
2305
  .on('click', (ev) => {
2287
2306
  ev.stopPropagation();
2307
+ this.activate();
2288
2308
  this.keepShowingButtons = true;
2289
2309
  this.changeTypeHandler(ev);
2290
2310
  })
@@ -2493,6 +2513,7 @@ class ColumnRendererCP {
2493
2513
  curQuery.fireColumnsChangedEvent(core.QueryChangeAction.Delete, this.column);
2494
2514
  break;
2495
2515
  case exports.ColumnAction.Enable:
2516
+ this.activate();
2496
2517
  this.columnEnabled = !this.columnEnabled;
2497
2518
  this.fireColumnChanged();
2498
2519
  break;
@@ -2527,6 +2548,7 @@ class ColumnRendererCP {
2527
2548
  case exports.ColumnAction.Menu:
2528
2549
  const colMenu = this.buttonMenu;
2529
2550
  this.keepShowingButtons = true;
2551
+ this.activate();
2530
2552
  colMenu.showMenu({
2531
2553
  anchor: evt ? evt.target : null,
2532
2554
  selectedIds: this.getButtonMenuSelectedItems(),
@@ -2561,7 +2583,7 @@ class ColumnRendererCP {
2561
2583
  action = exports.ColumnAction.SortingAsc;
2562
2584
  break;
2563
2585
  case "Descending":
2564
- action = exports.ColumnAction.SortingAsc;
2586
+ action = exports.ColumnAction.SortingDesc;
2565
2587
  break;
2566
2588
  }
2567
2589
  this.buttonMenuHandler(action, evt);
@@ -2591,26 +2613,26 @@ class ColumnRendererCP {
2591
2613
  if (menuId) {
2592
2614
  menuId += '-ButtonMenu';
2593
2615
  }
2594
- const common = [];
2595
- common.push({
2616
+ const Appearance = [];
2617
+ Appearance.push({
2596
2618
  id: "enable",
2597
2619
  text: core.i18n.getText('MenuEnable')
2598
2620
  });
2599
2621
  if (this.panel.options.allowHiddenColumns) {
2600
- common.push({
2622
+ Appearance.push({
2601
2623
  id: "hidden",
2602
2624
  text: core.i18n.getText('CmdHiddenColumn')
2603
2625
  });
2604
2626
  }
2605
- common.push({
2627
+ Appearance.push({
2606
2628
  id: "delete",
2607
2629
  text: core.i18n.getText('CmdDelete')
2608
2630
  });
2609
2631
  let items = [];
2610
2632
  items.push({
2611
2633
  id: '__group',
2612
- text: ' ',
2613
- items: common
2634
+ text: core.i18n.getText('CmdGroupAppearance'),
2635
+ items: Appearance
2614
2636
  });
2615
2637
  const sortItems = this.panel.options.allowSorting ?
2616
2638
  [
@@ -2669,6 +2691,17 @@ class ColumnRendererCP {
2669
2691
  if (this.column.isHidden()) {
2670
2692
  arrSelected.push("hidden");
2671
2693
  }
2694
+ switch (this.column.sorting) {
2695
+ case core.SortDirection.None:
2696
+ arrSelected.push("None");
2697
+ break;
2698
+ case core.SortDirection.Ascending:
2699
+ arrSelected.push("Ascending");
2700
+ break;
2701
+ case core.SortDirection.Descending:
2702
+ arrSelected.push("Descending");
2703
+ break;
2704
+ }
2672
2705
  const formats = this.panel
2673
2706
  .getContext()
2674
2707
  .getModel()
@@ -2710,6 +2743,7 @@ class AttrColumnRendererCP extends ColumnRendererCP {
2710
2743
  .text(attrCaption) //TO DO:add localization
2711
2744
  .on('click', (ev) => {
2712
2745
  ev.stopPropagation();
2746
+ this.activate();
2713
2747
  this.panel.showEntitiesMenu({
2714
2748
  anchor: ev.target,
2715
2749
  selectedIds: null,
@@ -2880,6 +2914,7 @@ class AggrFuncColumnRendererCP extends AttrColumnRendererCP {
2880
2914
  .text(item.text)
2881
2915
  .on('click', (ev) => {
2882
2916
  ev.stopPropagation();
2917
+ this.activate();
2883
2918
  this.functionMenu.showMenu({
2884
2919
  anchor: functionLink.toDOM(),
2885
2920
  selectedIds: null,
@@ -3558,7 +3593,7 @@ class ColumnsPanel extends core.Widget {
3558
3593
  this.context.options.columnTitleFormat = options.titleElementFormat;
3559
3594
  }
3560
3595
  if (ui.browserUtils.isMobileMode()) {
3561
- this.options.buttons = ["menu"];
3596
+ this.options.buttons = ["menu", "sorting"];
3562
3597
  this.options.showHeader = false;
3563
3598
  }
3564
3599
  }
@@ -7679,7 +7714,7 @@ class QueryPanel extends core.Widget {
7679
7714
  }
7680
7715
  }
7681
7716
  };
7682
- let autoEdit = this.options.autoEditNewCondition;
7717
+ let autoEdit = this.options.autoEditNewCondition && !ui.browserUtils.isMobileMode();
7683
7718
  if (Array.isArray(conds)) {
7684
7719
  conds.forEach((cond) => modifyCondition(cond, autoEdit));
7685
7720
  autoEdit = false;
@@ -7699,10 +7734,10 @@ class QueryPanel extends core.Widget {
7699
7734
  if (parentEl) {
7700
7735
  const newCondContainer = parentEl.lastChild;
7701
7736
  if (newCondContainer) {
7702
- const el = renderer.render(this.options.autoEditNewCondition);
7737
+ const el = renderer.render(this.options.autoEditNewCondition && !ui.browserUtils.isMobileMode());
7703
7738
  newCondContainer.appendChild(el);
7704
7739
  el.scrollIntoView(false);
7705
- if (isFocusInside && !this.options.autoEditNewCondition) {
7740
+ if (isFocusInside && (!this.options.autoEditNewCondition || ui.browserUtils.isMobileMode())) {
7706
7741
  el.querySelector(`a`).focus();
7707
7742
  }
7708
7743
  }
@@ -14213,6 +14248,7 @@ function addEasyQueryUITexts() {
14213
14248
  CmdDeleteColumn: 'Delete column',
14214
14249
  CmdDeleteSorting: 'Delete sorting',
14215
14250
  CmdDescending: 'Descending',
14251
+ CmdGroupAppearance: 'Appearance',
14216
14252
  CmdGroupSort: 'Sorting',
14217
14253
  CmdGroupFormat: 'Display format',
14218
14254
  CmdNotSorted: 'Not sorted',
@@ -1990,13 +1990,15 @@ class ColumnRendererCP {
1990
1990
  //start sort button
1991
1991
  .addChild('div', builder => builder
1992
1992
  .addClass(`${eqCssPrefix}-button-placeholder`, `${this.cssPrefix}-button-placeholder`, `${this.cssPrefix}-colelement`, `${this.cssPrefix}-sortbutton-placeholder`)
1993
- .addChildElement(this.sortingButton))
1994
- // end sort button
1995
- .addChildElement(this.renderExpressionBlock());
1993
+ .addChildElement(this.sortingButton));
1994
+ // end sort button
1995
+ builder.addChildElement(this.renderExpressionBlock());
1996
1996
  if (this.panel.options.showColumnTitles !== false && !browserUtils.isMobileMode()) {
1997
1997
  builder
1998
1998
  .addChildElement(this.renderCaptionBlock());
1999
1999
  }
2000
+ let buttonsIndex = 0;
2001
+ let buttonsList = '';
2000
2002
  builder
2001
2003
  //start buttons
2002
2004
  .addChild('div', builder => {
@@ -2006,30 +2008,42 @@ class ColumnRendererCP {
2006
2008
  //start enable button
2007
2009
  if (this.getButtonsToShow().indexOf("enable") >= 0 && !this.column.isReadOnly()) {
2008
2010
  builder.addChildElement(this.renderEnabledButton());
2011
+ buttonsIndex++;
2012
+ buttonsList += 'Enable';
2009
2013
  }
2010
2014
  //end enable button
2011
2015
  //start aggr func button
2012
2016
  if (this.getButtonsToShow().indexOf("type") >= 0 && this.columnEnabled) {
2013
2017
  builder.addChildElement(this.renderColumnTypeButton());
2018
+ buttonsIndex++;
2019
+ buttonsList += 'Type';
2014
2020
  }
2015
2021
  //end aggr func button
2016
2022
  //start format selector button
2017
2023
  if (this.getButtonsToShow().indexOf("format") >= 0 && this.columnEnabled) {
2018
2024
  builder.addChildElement(this.renderColumnFormatButton());
2025
+ buttonsIndex++;
2026
+ buttonsList += 'Format';
2019
2027
  }
2020
2028
  //end format selector button
2021
2029
  //start delete button
2022
2030
  if (this.getButtonsToShow().indexOf("delete") >= 0 && !this.column.isReadOnly()) {
2023
2031
  builder.addChildElement(this.renderDeleteButton());
2032
+ buttonsIndex++;
2033
+ buttonsList += 'Delete';
2024
2034
  }
2025
2035
  //end delete button
2026
2036
  //start menu button
2027
2037
  if (this.getButtonsToShow().indexOf("menu") >= 0 && !this.column.isReadOnly()) {
2028
2038
  builder.addChildElement(this.renderMenuButton());
2039
+ buttonsIndex++;
2040
+ buttonsList += 'Menu';
2029
2041
  }
2030
2042
  //end menu button
2031
2043
  });
2032
2044
  //end buttons
2045
+ builder.addClass(`eqjs-buttons-in-block-${buttonsIndex}`);
2046
+ builder.addClass(`eqjs-buttons-in-block-${buttonsList}`);
2033
2047
  if (!browserUtils.isMobileMode()) {
2034
2048
  //start event listeners
2035
2049
  builder
@@ -2051,12 +2065,15 @@ class ColumnRendererCP {
2051
2065
  }
2052
2066
  onMouseClick(ev) {
2053
2067
  ev.stopPropagation();
2068
+ this.activate();
2069
+ return false;
2070
+ }
2071
+ activate() {
2054
2072
  this.panel.toggleColumnPicked(this.column);
2055
2073
  this.adjustButtonsVisibility();
2056
2074
  if (!browserUtils.isMobileMode()) {
2057
2075
  this.element.dispatchEvent(createBrowserEvent("mouseenter"));
2058
2076
  }
2059
- return false;
2060
2077
  }
2061
2078
  fireColumnChanged() {
2062
2079
  this.column.fireChangedEvent();
@@ -2076,6 +2093,7 @@ class ColumnRendererCP {
2076
2093
  .text(this.column.caption)
2077
2094
  .on('click', (ev) => {
2078
2095
  ev.stopPropagation();
2096
+ this.activate();
2079
2097
  const element = ev.target;
2080
2098
  const inputEl = element.parentElement.querySelector('input');
2081
2099
  if (inputEl) {
@@ -2150,7 +2168,7 @@ class ColumnRendererCP {
2150
2168
  sortButtonDirectionCssClass = `${sortButtonCssClass}-none`;
2151
2169
  break;
2152
2170
  }
2153
- if (!this.isEditable()) {
2171
+ if (!this.isEditable() || browserUtils.isMobileMode()) {
2154
2172
  if (sorting === SortDirection.Ascending
2155
2173
  || sorting === SortDirection.Descending)
2156
2174
  return domel('div')
@@ -2166,11 +2184,12 @@ class ColumnRendererCP {
2166
2184
  .attr('tabIndex', '0')
2167
2185
  .on('click', (ev) => {
2168
2186
  ev.stopPropagation();
2187
+ this.activate();
2169
2188
  this.keepShowingButtons = true;
2170
2189
  const menu = this.getUIS() ? this.panel.sortMenu || this.panel.moveMenu : this.panel.moveMenu;
2171
2190
  menu.showMenu({
2172
2191
  anchor: this.sortingButton,
2173
- selectedIds: this.column.isHidden() ? ['IsHidden'] : null,
2192
+ selectedIds: this.getButtonMenuSelectedItems(), // this.column.isHidden() ? ['IsHidden'] : null,
2174
2193
  itemSelectedCallback: (data, items) => {
2175
2194
  let action;
2176
2195
  switch (data.id) {
@@ -2283,6 +2302,7 @@ class ColumnRendererCP {
2283
2302
  .attr('tabIndex', '0')
2284
2303
  .on('click', (ev) => {
2285
2304
  ev.stopPropagation();
2305
+ this.activate();
2286
2306
  this.keepShowingButtons = true;
2287
2307
  this.changeTypeHandler(ev);
2288
2308
  })
@@ -2491,6 +2511,7 @@ class ColumnRendererCP {
2491
2511
  curQuery.fireColumnsChangedEvent(QueryChangeAction.Delete, this.column);
2492
2512
  break;
2493
2513
  case ColumnAction.Enable:
2514
+ this.activate();
2494
2515
  this.columnEnabled = !this.columnEnabled;
2495
2516
  this.fireColumnChanged();
2496
2517
  break;
@@ -2525,6 +2546,7 @@ class ColumnRendererCP {
2525
2546
  case ColumnAction.Menu:
2526
2547
  const colMenu = this.buttonMenu;
2527
2548
  this.keepShowingButtons = true;
2549
+ this.activate();
2528
2550
  colMenu.showMenu({
2529
2551
  anchor: evt ? evt.target : null,
2530
2552
  selectedIds: this.getButtonMenuSelectedItems(),
@@ -2559,7 +2581,7 @@ class ColumnRendererCP {
2559
2581
  action = ColumnAction.SortingAsc;
2560
2582
  break;
2561
2583
  case "Descending":
2562
- action = ColumnAction.SortingAsc;
2584
+ action = ColumnAction.SortingDesc;
2563
2585
  break;
2564
2586
  }
2565
2587
  this.buttonMenuHandler(action, evt);
@@ -2589,26 +2611,26 @@ class ColumnRendererCP {
2589
2611
  if (menuId) {
2590
2612
  menuId += '-ButtonMenu';
2591
2613
  }
2592
- const common = [];
2593
- common.push({
2614
+ const Appearance = [];
2615
+ Appearance.push({
2594
2616
  id: "enable",
2595
2617
  text: i18n$1.getText('MenuEnable')
2596
2618
  });
2597
2619
  if (this.panel.options.allowHiddenColumns) {
2598
- common.push({
2620
+ Appearance.push({
2599
2621
  id: "hidden",
2600
2622
  text: i18n$1.getText('CmdHiddenColumn')
2601
2623
  });
2602
2624
  }
2603
- common.push({
2625
+ Appearance.push({
2604
2626
  id: "delete",
2605
2627
  text: i18n$1.getText('CmdDelete')
2606
2628
  });
2607
2629
  let items = [];
2608
2630
  items.push({
2609
2631
  id: '__group',
2610
- text: ' ',
2611
- items: common
2632
+ text: i18n$1.getText('CmdGroupAppearance'),
2633
+ items: Appearance
2612
2634
  });
2613
2635
  const sortItems = this.panel.options.allowSorting ?
2614
2636
  [
@@ -2667,6 +2689,17 @@ class ColumnRendererCP {
2667
2689
  if (this.column.isHidden()) {
2668
2690
  arrSelected.push("hidden");
2669
2691
  }
2692
+ switch (this.column.sorting) {
2693
+ case SortDirection.None:
2694
+ arrSelected.push("None");
2695
+ break;
2696
+ case SortDirection.Ascending:
2697
+ arrSelected.push("Ascending");
2698
+ break;
2699
+ case SortDirection.Descending:
2700
+ arrSelected.push("Descending");
2701
+ break;
2702
+ }
2670
2703
  const formats = this.panel
2671
2704
  .getContext()
2672
2705
  .getModel()
@@ -2708,6 +2741,7 @@ class AttrColumnRendererCP extends ColumnRendererCP {
2708
2741
  .text(attrCaption) //TO DO:add localization
2709
2742
  .on('click', (ev) => {
2710
2743
  ev.stopPropagation();
2744
+ this.activate();
2711
2745
  this.panel.showEntitiesMenu({
2712
2746
  anchor: ev.target,
2713
2747
  selectedIds: null,
@@ -2878,6 +2912,7 @@ class AggrFuncColumnRendererCP extends AttrColumnRendererCP {
2878
2912
  .text(item.text)
2879
2913
  .on('click', (ev) => {
2880
2914
  ev.stopPropagation();
2915
+ this.activate();
2881
2916
  this.functionMenu.showMenu({
2882
2917
  anchor: functionLink.toDOM(),
2883
2918
  selectedIds: null,
@@ -3556,7 +3591,7 @@ class ColumnsPanel extends Widget {
3556
3591
  this.context.options.columnTitleFormat = options.titleElementFormat;
3557
3592
  }
3558
3593
  if (browserUtils.isMobileMode()) {
3559
- this.options.buttons = ["menu"];
3594
+ this.options.buttons = ["menu", "sorting"];
3560
3595
  this.options.showHeader = false;
3561
3596
  }
3562
3597
  }
@@ -7677,7 +7712,7 @@ class QueryPanel extends Widget {
7677
7712
  }
7678
7713
  }
7679
7714
  };
7680
- let autoEdit = this.options.autoEditNewCondition;
7715
+ let autoEdit = this.options.autoEditNewCondition && !browserUtils.isMobileMode();
7681
7716
  if (Array.isArray(conds)) {
7682
7717
  conds.forEach((cond) => modifyCondition(cond, autoEdit));
7683
7718
  autoEdit = false;
@@ -7697,10 +7732,10 @@ class QueryPanel extends Widget {
7697
7732
  if (parentEl) {
7698
7733
  const newCondContainer = parentEl.lastChild;
7699
7734
  if (newCondContainer) {
7700
- const el = renderer.render(this.options.autoEditNewCondition);
7735
+ const el = renderer.render(this.options.autoEditNewCondition && !browserUtils.isMobileMode());
7701
7736
  newCondContainer.appendChild(el);
7702
7737
  el.scrollIntoView(false);
7703
- if (isFocusInside && !this.options.autoEditNewCondition) {
7738
+ if (isFocusInside && (!this.options.autoEditNewCondition || browserUtils.isMobileMode())) {
7704
7739
  el.querySelector(`a`).focus();
7705
7740
  }
7706
7741
  }
@@ -14211,6 +14246,7 @@ function addEasyQueryUITexts() {
14211
14246
  CmdDeleteColumn: 'Delete column',
14212
14247
  CmdDeleteSorting: 'Delete sorting',
14213
14248
  CmdDescending: 'Descending',
14249
+ CmdGroupAppearance: 'Appearance',
14214
14250
  CmdGroupSort: 'Sorting',
14215
14251
  CmdGroupFormat: 'Display format',
14216
14252
  CmdNotSorted: 'Not sorted',
@@ -32,6 +32,7 @@ export declare abstract class ColumnRendererCP {
32
32
  protected set columnEnabled(value: boolean);
33
33
  render(): HTMLDivElement;
34
34
  private onMouseClick;
35
+ activate(): void;
35
36
  fireColumnChanged(): void;
36
37
  refresh(): void;
37
38
  protected abstract renderExpressionBlock(): HTMLDivElement;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easyquery/ui",
3
- "version": "7.3.0-rc01",
3
+ "version": "7.3.0-rc03",
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.0-rc01"
33
+ "@easyquery/core": "^7.3.0-rc03"
34
34
  },
35
35
  "files": [
36
36
  "dist",