@finos/legend-query-builder 4.14.57 → 4.14.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/lib/components/QueryBuilder.d.ts.map +1 -1
  2. package/lib/components/QueryBuilder.js +1 -1
  3. package/lib/components/QueryBuilder.js.map +1 -1
  4. package/lib/components/QueryChat.d.ts +1 -1
  5. package/lib/components/QueryChat.d.ts.map +1 -1
  6. package/lib/components/QueryChat.js +1 -3
  7. package/lib/components/QueryChat.js.map +1 -1
  8. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts +3 -2
  9. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
  10. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +33 -54
  11. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
  12. package/lib/components/filter/QueryBuilderFilterPanel.d.ts +5 -2
  13. package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
  14. package/lib/components/filter/QueryBuilderFilterPanel.js +37 -32
  15. package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
  16. package/lib/components/result/tds/QueryBuilderTDSGridResult.d.ts.map +1 -1
  17. package/lib/components/result/tds/QueryBuilderTDSGridResult.js +4 -2
  18. package/lib/components/result/tds/QueryBuilderTDSGridResult.js.map +1 -1
  19. package/lib/index.css +1 -17
  20. package/lib/index.css.map +1 -1
  21. package/lib/package.json +3 -3
  22. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts +3 -3
  23. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts.map +1 -1
  24. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js +3 -3
  25. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js.map +1 -1
  26. package/lib/stores/filter/QueryBuilderFilterState.d.ts +3 -3
  27. package/lib/stores/filter/QueryBuilderFilterState.d.ts.map +1 -1
  28. package/lib/stores/filter/QueryBuilderFilterState.js +3 -3
  29. package/lib/stores/filter/QueryBuilderFilterState.js.map +1 -1
  30. package/package.json +11 -11
  31. package/src/components/QueryBuilder.tsx +8 -3
  32. package/src/components/QueryChat.tsx +1 -9
  33. package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +73 -116
  34. package/src/components/filter/QueryBuilderFilterPanel.tsx +43 -35
  35. package/src/components/result/tds/QueryBuilderTDSGridResult.tsx +4 -2
  36. package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.ts +3 -3
  37. package/src/stores/filter/QueryBuilderFilterState.ts +3 -3
@@ -82,7 +82,6 @@ import {
82
82
  PostFilterTDSColumnValueConditionValueState,
83
83
  } from '../../stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js';
84
84
  import {
85
- type QueryBuilderProjectionColumnState,
86
85
  type QueryBuilderProjectionColumnDragSource,
87
86
  QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
88
87
  QueryBuilderDerivationProjectionColumnState,
@@ -115,6 +114,23 @@ import {
115
114
  import { QueryBuilderPropertyNameDisplay } from '../QueryBuilderPropertyExpressionEditor.js';
116
115
  import { convertTextToPrimitiveInstanceValue } from '../../stores/shared/ValueSpecificationEditorHelper.js';
117
116
 
117
+ export const CAN_DROP_MAIN_GROUP_DND_TYPES = [
118
+ QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
119
+ QUERY_BUILDER_WINDOW_COLUMN_DND_TYPE,
120
+ ];
121
+
122
+ export const CAN_DROP_POST_FILTER_NODE_DND_TYPES = [
123
+ QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
124
+ QUERY_BUILDER_WINDOW_COLUMN_DND_TYPE,
125
+ QUERY_BUILDER_POST_FILTER_DND_TYPE.CONDITION,
126
+ ];
127
+
128
+ export const CAN_DROP_POST_FILTER_VALUE_DND_TYPES = [
129
+ QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
130
+ QUERY_BUILDER_WINDOW_COLUMN_DND_TYPE,
131
+ QUERY_BUILDER_VARIABLE_DND_TYPE,
132
+ ];
133
+
118
134
  const QueryBuilderPostFilterConditionContextMenu = observer(
119
135
  forwardRef<
120
136
  HTMLDivElement,
@@ -169,7 +185,7 @@ const QueryBuilderPostFilterGroupConditionEditor = observer(
169
185
  isDragOver: boolean;
170
186
  isDroppable: boolean;
171
187
  }) => {
172
- const { node, isDragOver, isDroppable: isDroppable } = props;
188
+ const { node, isDragOver, isDroppable } = props;
173
189
  const switchOperation: React.MouseEventHandler<HTMLDivElement> = (
174
190
  event,
175
191
  ): void => {
@@ -211,94 +227,50 @@ export const QueryBuilderColumnBadge = observer(
211
227
  (props: {
212
228
  colState: QueryBuilderTDSColumnState;
213
229
  removeColumn: () => void;
214
- onColumnChange?:
215
- | ((columnState: QueryBuilderProjectionColumnState) => Promise<void>)
216
- | undefined;
217
230
  }) => {
218
- const { colState, onColumnChange, removeColumn } = props;
219
- const applicationStore = useApplicationStore();
231
+ const { colState, removeColumn } = props;
220
232
  const type = colState.getColumnType();
221
- const handleDrop = onColumnChange
222
- ? useCallback(
223
- (item: QueryBuilderProjectionColumnDragSource): Promise<void> =>
224
- onColumnChange(item.columnState),
225
- [onColumnChange],
226
- )
227
- : undefined;
228
- const [{ isDragOver }, dropConnector] = useDrop<
229
- QueryBuilderProjectionColumnDragSource,
230
- void,
231
- { isDragOver: boolean }
232
- >(
233
- () => ({
234
- accept: [
235
- QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
236
- QUERY_BUILDER_WINDOW_COLUMN_DND_TYPE,
237
- ],
238
- drop: (item, monitor): void => {
239
- if (!monitor.didDrop()) {
240
- handleDrop?.(item).catch(applicationStore.alertUnhandledError);
241
- } // prevent drop event propagation to accomondate for nested DnD
242
- },
243
- collect: (monitor) => ({
244
- isDragOver: monitor.isOver({ shallow: true }),
245
- }),
246
- }),
247
- [applicationStore, handleDrop],
248
- );
249
233
 
250
- const renderColumnBadgeContent = (): React.ReactNode => (
251
- <div className="query-builder-column-badge__content">
252
- {type && (
234
+ return (
235
+ <div className="query-builder-column-badge">
236
+ <div className="query-builder-column-badge__content">
237
+ {type && (
238
+ <div
239
+ className={clsx('query-builder-column-badge__type', {
240
+ 'query-builder-column-badge__type--class':
241
+ type instanceof Class,
242
+ 'query-builder-column-badge__type--enumeration':
243
+ type instanceof Enumeration,
244
+ 'query-builder-column-badge__type--primitive':
245
+ type instanceof PrimitiveType,
246
+ })}
247
+ >
248
+ {renderPropertyTypeIcon(type)}
249
+ </div>
250
+ )}
253
251
  <div
254
- className={clsx('query-builder-column-badge__type', {
255
- 'query-builder-column-badge__type--class': type instanceof Class,
256
- 'query-builder-column-badge__type--enumeration':
257
- type instanceof Enumeration,
258
- 'query-builder-column-badge__type--primitive':
259
- type instanceof PrimitiveType,
260
- })}
252
+ className="query-builder-column-badge__property"
253
+ title={`${colState.columnName}`}
261
254
  >
262
- {renderPropertyTypeIcon(type)}
255
+ {colState.columnName}
263
256
  </div>
264
- )}
265
- <div
266
- className="query-builder-column-badge__property"
267
- title={`${colState.columnName}`}
268
- >
269
- {colState.columnName}
257
+ <QueryBuilderColumnInfoTooltip
258
+ columnState={colState}
259
+ placement="bottom-end"
260
+ >
261
+ <div className="query-builder-column-badge__property__info">
262
+ <InfoCircleIcon />
263
+ </div>
264
+ </QueryBuilderColumnInfoTooltip>
265
+ <button
266
+ className="query-builder-column-badge__action"
267
+ name="Reset"
268
+ title="Reset"
269
+ onClick={removeColumn}
270
+ >
271
+ <RefreshIcon />
272
+ </button>
270
273
  </div>
271
- <QueryBuilderColumnInfoTooltip
272
- columnState={colState}
273
- placement="bottom-end"
274
- >
275
- <div className="query-builder-column-badge__property__info">
276
- <InfoCircleIcon />
277
- </div>
278
- </QueryBuilderColumnInfoTooltip>
279
- <button
280
- className="query-builder-column-badge__action"
281
- name="Reset"
282
- title="Reset"
283
- onClick={removeColumn}
284
- >
285
- <RefreshIcon />
286
- </button>
287
- </div>
288
- );
289
-
290
- return onColumnChange ? (
291
- <div ref={dropConnector} className="query-builder-column-badge">
292
- <PanelEntryDropZonePlaceholder
293
- isDragOver={isDragOver}
294
- label="Change Property"
295
- >
296
- {renderColumnBadgeContent()}
297
- </PanelEntryDropZonePlaceholder>
298
- </div>
299
- ) : (
300
- <div className="query-builder-column-badge">
301
- {renderColumnBadgeContent()}
302
274
  </div>
303
275
  );
304
276
  },
@@ -378,10 +350,7 @@ const QueryBuilderPostFilterConditionEditor = observer(
378
350
  { isFilterValueDragOver: boolean }
379
351
  >(
380
352
  () => ({
381
- accept: [
382
- QUERY_BUILDER_VARIABLE_DND_TYPE,
383
- QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
384
- ],
353
+ accept: CAN_DROP_POST_FILTER_VALUE_DND_TYPES,
385
354
  canDrop: (item): boolean =>
386
355
  canDropItemOntoNodeValue(item, node.condition),
387
356
  drop: (item, monitor): void => {
@@ -399,8 +368,9 @@ const QueryBuilderPostFilterConditionEditor = observer(
399
368
  const { isFilterValueDroppable } = useDragLayer((monitor) => ({
400
369
  isFilterValueDroppable:
401
370
  monitor.isDragging() &&
402
- (monitor.getItemType() === QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE ||
403
- monitor.getItemType() === QUERY_BUILDER_VARIABLE_DND_TYPE) &&
371
+ CAN_DROP_POST_FILTER_VALUE_DND_TYPES.includes(
372
+ monitor.getItemType()?.toString() ?? '',
373
+ ) &&
404
374
  canDropItemOntoNodeValue(monitor.getItem(), node.condition),
405
375
  }));
406
376
  const resetNode = (): void => {
@@ -479,11 +449,6 @@ const QueryBuilderPostFilterConditionEditor = observer(
479
449
  rightConditionValue instanceof
480
450
  PostFilterTDSColumnValueConditionValueState
481
451
  ) {
482
- const changeRightCol = async (
483
- columnState: QueryBuilderProjectionColumnState,
484
- ): Promise<void> => {
485
- rightConditionValue.changeCol(columnState);
486
- };
487
452
  return (
488
453
  <div
489
454
  ref={dropConnector}
@@ -496,9 +461,6 @@ const QueryBuilderPostFilterConditionEditor = observer(
496
461
  >
497
462
  <QueryBuilderColumnBadge
498
463
  colState={rightConditionValue.tdsColumn}
499
- onColumnChange={
500
- isFilterValueDroppable ? changeRightCol : undefined
501
- }
502
464
  removeColumn={removeTDSColumnValue}
503
465
  />
504
466
  </PanelEntryDropZonePlaceholder>
@@ -703,11 +665,7 @@ const QueryBuilderPostFilterTreeNodeContainer = observer(
703
665
  { isDragOver: boolean; deepIsDragOver: boolean }
704
666
  >(
705
667
  () => ({
706
- accept: [
707
- ...Object.values(QUERY_BUILDER_POST_FILTER_DND_TYPE),
708
- QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
709
- QUERY_BUILDER_WINDOW_COLUMN_DND_TYPE,
710
- ],
668
+ accept: CAN_DROP_POST_FILTER_NODE_DND_TYPES,
711
669
  drop: (item, monitor): void => {
712
670
  if (!monitor.didDrop()) {
713
671
  handleDrop(item, monitor.getItemType() as string);
@@ -744,8 +702,9 @@ const QueryBuilderPostFilterTreeNodeContainer = observer(
744
702
  const { isDroppable } = useDragLayer((monitor) => ({
745
703
  isDroppable:
746
704
  monitor.isDragging() &&
747
- (monitor.getItemType() === QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE ||
748
- monitor.getItemType() === QUERY_BUILDER_WINDOW_COLUMN_DND_TYPE),
705
+ CAN_DROP_POST_FILTER_NODE_DND_TYPES.includes(
706
+ monitor.getItemType()?.toString() ?? '',
707
+ ),
749
708
  }));
750
709
 
751
710
  // context menu
@@ -761,12 +720,6 @@ const QueryBuilderPostFilterTreeNodeContainer = observer(
761
720
  data-testid={
762
721
  QUERY_BUILDER_TEST_ID.QUERY_BUILDER_POST_FILTER_TREE_NODE_CONTAINER
763
722
  }
764
- onClick={
765
- node instanceof QueryBuilderPostFilterTreeConditionNodeData ||
766
- node instanceof QueryBuilderPostFilterTreeBlankConditionNodeData
767
- ? selectNode
768
- : undefined
769
- }
770
723
  className={clsx('query-builder-post-filter-tree__node__container', {
771
724
  'query-builder-post-filter-tree__node__container--group':
772
725
  node instanceof QueryBuilderPostFilterTreeGroupNodeData,
@@ -799,6 +752,12 @@ const QueryBuilderPostFilterTreeNodeContainer = observer(
799
752
  }
800
753
  className="query-builder-post-filter-tree__node__content"
801
754
  ref={dragRef}
755
+ onClick={
756
+ node instanceof QueryBuilderPostFilterTreeConditionNodeData ||
757
+ node instanceof QueryBuilderPostFilterTreeBlankConditionNodeData
758
+ ? selectNode
759
+ : undefined
760
+ }
802
761
  >
803
762
  {node instanceof QueryBuilderPostFilterTreeGroupNodeData && (
804
763
  <QueryBuilderPostFilterGroupConditionEditor
@@ -1013,8 +972,9 @@ const QueryBuilderPostFilterPanelContent = observer(
1013
972
  const { isDroppable } = useDragLayer((monitor) => ({
1014
973
  isDroppable:
1015
974
  monitor.isDragging() &&
1016
- (monitor.getItemType() === QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE ||
1017
- monitor.getItemType() === QUERY_BUILDER_WINDOW_COLUMN_DND_TYPE),
975
+ CAN_DROP_MAIN_GROUP_DND_TYPES.includes(
976
+ monitor.getItemType()?.toString() ?? '',
977
+ ),
1018
978
  }));
1019
979
 
1020
980
  // Drag and Drop
@@ -1071,10 +1031,7 @@ const QueryBuilderPostFilterPanelContent = observer(
1071
1031
  { isDragOver: boolean }
1072
1032
  >(
1073
1033
  () => ({
1074
- accept: [
1075
- QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
1076
- QUERY_BUILDER_WINDOW_COLUMN_DND_TYPE,
1077
- ],
1034
+ accept: CAN_DROP_MAIN_GROUP_DND_TYPES,
1078
1035
  drop: (item, monitor): void => {
1079
1036
  if (!monitor.didDrop()) {
1080
1037
  handleDrop(item).catch(applicationStore.alertUnhandledError);
@@ -121,6 +121,34 @@ import { buildPropertyExpressionChain } from '../../stores/QueryBuilderValueSpec
121
121
  import { QueryBuilderPanelIssueCountBadge } from '../shared/QueryBuilderPanelIssueCountBadge.js';
122
122
  import { convertTextToPrimitiveInstanceValue } from '../../stores/shared/ValueSpecificationEditorHelper.js';
123
123
 
124
+ export const CAN_DROP_MAIN_GROUP_DND_TYPES_FETCH_SUPPORTED = [
125
+ QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY,
126
+ QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY,
127
+ QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
128
+ ];
129
+
130
+ export const CAN_DROP_MAIN_GROUP_DND_TYPES = [
131
+ QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY,
132
+ QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY,
133
+ ];
134
+
135
+ export const CAN_DROP_FILTER_NODE_DND_TYPES_FETCH_SUPPORTED = [
136
+ QUERY_BUILDER_FILTER_DND_TYPE.CONDITION,
137
+ QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY,
138
+ QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY,
139
+ QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
140
+ ];
141
+
142
+ export const CAN_DROP_FILTER_NODE_DND_TYPES = [
143
+ QUERY_BUILDER_FILTER_DND_TYPE.CONDITION,
144
+ QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY,
145
+ QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY,
146
+ ];
147
+
148
+ export const CAN_DROP_FILTER_VALUE_DND_TYPES = [
149
+ QUERY_BUILDER_VARIABLE_DND_TYPE,
150
+ ];
151
+
124
152
  const isCollectionProperty = (
125
153
  propertyExpression: AbstractPropertyExpression,
126
154
  ): boolean => {
@@ -605,19 +633,6 @@ const buildFilterTree = (
605
633
  }
606
634
  };
607
635
 
608
- export const IS_DRAGGABLE_FILTER_DND_TYPES_FETCH_SUPPORTED = [
609
- QUERY_BUILDER_FILTER_DND_TYPE.CONDITION,
610
- QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY,
611
- QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY,
612
- QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
613
- ];
614
-
615
- export const IS_DRAGGABLE_FILTER_DND_TYPES = [
616
- QUERY_BUILDER_FILTER_DND_TYPE.CONDITION,
617
- QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY,
618
- QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY,
619
- ];
620
-
621
636
  const QueryBuilderFilterGroupConditionEditor = observer(
622
637
  (props: {
623
638
  node: QueryBuilderFilterTreeGroupNodeData;
@@ -762,7 +777,7 @@ const QueryBuilderFilterConditionEditor = observer(
762
777
  { isFilterValueDragOver: boolean }
763
778
  >(
764
779
  () => ({
765
- accept: [QUERY_BUILDER_VARIABLE_DND_TYPE],
780
+ accept: CAN_DROP_FILTER_VALUE_DND_TYPES,
766
781
  drop: (item, monitor): void => {
767
782
  if (!monitor.didDrop()) {
768
783
  handleDrop(item);
@@ -1084,8 +1099,8 @@ const QueryBuilderFilterTreeNodeContainer = observer(
1084
1099
  () => ({
1085
1100
  accept:
1086
1101
  queryBuilderState.TEMPORARY__isDnDFetchStructureToFilterSupported
1087
- ? IS_DRAGGABLE_FILTER_DND_TYPES_FETCH_SUPPORTED
1088
- : IS_DRAGGABLE_FILTER_DND_TYPES,
1102
+ ? CAN_DROP_FILTER_NODE_DND_TYPES_FETCH_SUPPORTED
1103
+ : CAN_DROP_FILTER_NODE_DND_TYPES,
1089
1104
  drop: (item, monitor): void => {
1090
1105
  if (!monitor.didDrop()) {
1091
1106
  handleDrop(item, monitor.getItemType() as string);
@@ -1121,8 +1136,8 @@ const QueryBuilderFilterTreeNodeContainer = observer(
1121
1136
  isDroppable:
1122
1137
  monitor.isDragging() &&
1123
1138
  (queryBuilderState.TEMPORARY__isDnDFetchStructureToFilterSupported
1124
- ? IS_DRAGGABLE_FILTER_DND_TYPES_FETCH_SUPPORTED
1125
- : IS_DRAGGABLE_FILTER_DND_TYPES
1139
+ ? CAN_DROP_FILTER_NODE_DND_TYPES_FETCH_SUPPORTED
1140
+ : CAN_DROP_FILTER_NODE_DND_TYPES
1126
1141
  ).includes(monitor.getItemType()?.toString() ?? ''),
1127
1142
  }));
1128
1143
 
@@ -1143,12 +1158,6 @@ const QueryBuilderFilterTreeNodeContainer = observer(
1143
1158
  data-testid={
1144
1159
  QUERY_BUILDER_TEST_ID.QUERY_BUILDER_FILTER_TREE_NODE_CONTAINER
1145
1160
  }
1146
- onClick={
1147
- node instanceof QueryBuilderFilterTreeConditionNodeData ||
1148
- node instanceof QueryBuilderFilterTreeBlankConditionNodeData
1149
- ? selectNode
1150
- : undefined
1151
- }
1152
1161
  className={clsx('query-builder-filter-tree__node__container', {
1153
1162
  'query-builder-filter-tree__node__container--group':
1154
1163
  node instanceof QueryBuilderFilterTreeGroupNodeData,
@@ -1185,6 +1194,12 @@ const QueryBuilderFilterTreeNodeContainer = observer(
1185
1194
  }
1186
1195
  className="query-builder-filter-tree__node__content"
1187
1196
  ref={dragRef}
1197
+ onClick={
1198
+ node instanceof QueryBuilderFilterTreeConditionNodeData ||
1199
+ node instanceof QueryBuilderFilterTreeBlankConditionNodeData
1200
+ ? selectNode
1201
+ : undefined
1202
+ }
1188
1203
  >
1189
1204
  {node instanceof QueryBuilderFilterTreeGroupNodeData && (
1190
1205
  <QueryBuilderFilterGroupConditionEditor
@@ -1408,8 +1423,8 @@ export const QueryBuilderFilterPanel = observer(
1408
1423
  isDroppable:
1409
1424
  monitor.isDragging() &&
1410
1425
  (queryBuilderState.TEMPORARY__isDnDFetchStructureToFilterSupported
1411
- ? IS_DRAGGABLE_FILTER_DND_TYPES_FETCH_SUPPORTED
1412
- : IS_DRAGGABLE_FILTER_DND_TYPES
1426
+ ? CAN_DROP_MAIN_GROUP_DND_TYPES_FETCH_SUPPORTED
1427
+ : CAN_DROP_MAIN_GROUP_DND_TYPES
1413
1428
  ).includes(monitor.getItemType()?.toString() ?? ''),
1414
1429
  }));
1415
1430
 
@@ -1459,15 +1474,8 @@ export const QueryBuilderFilterPanel = observer(
1459
1474
  () => ({
1460
1475
  accept:
1461
1476
  queryBuilderState.TEMPORARY__isDnDFetchStructureToFilterSupported
1462
- ? [
1463
- QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY,
1464
- QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY,
1465
- QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
1466
- ]
1467
- : [
1468
- QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY,
1469
- QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY,
1470
- ],
1477
+ ? CAN_DROP_MAIN_GROUP_DND_TYPES_FETCH_SUPPORTED
1478
+ : CAN_DROP_MAIN_GROUP_DND_TYPES,
1471
1479
  drop: (item, monitor): void => {
1472
1480
  if (!monitor.didDrop()) {
1473
1481
  handleDrop(item, monitor.getItemType() as string);
@@ -284,8 +284,10 @@ export const QueryBuilderTDSGridResult = observer(
284
284
  const selectedCells = [];
285
285
  if (selectedRanges) {
286
286
  for (const selectedRange of selectedRanges) {
287
- const startRow: number = selectedRange.startRow?.rowIndex ?? 0;
288
- const endRow: number = selectedRange.endRow?.rowIndex ?? 0;
287
+ const rangeStart: number = selectedRange.startRow?.rowIndex ?? 0;
288
+ const rangeEnd: number = selectedRange.endRow?.rowIndex ?? 0;
289
+ const startRow = rangeStart < rangeEnd ? rangeStart : rangeEnd;
290
+ const endRow = rangeStart < rangeEnd ? rangeEnd : rangeStart;
289
291
  const selectedColumns: string[] = selectedRange.columns.map((col) =>
290
292
  col.getColId(),
291
293
  );
@@ -81,9 +81,9 @@ import { buildtdsPropertyExpressionFromColState } from './operators/QueryBuilder
81
81
  import { TDS_COLUMN_GETTER } from '../../../../graph/QueryBuilderMetaModelConst.js';
82
82
 
83
83
  export enum QUERY_BUILDER_POST_FILTER_DND_TYPE {
84
- GROUP_CONDITION = 'GROUP_CONDITION',
85
- CONDITION = 'CONDITION',
86
- BLANK_CONDITION = 'BLANK_CONDITION',
84
+ GROUP_CONDITION = 'QUERY_BUILDER_POST_FILTER_DND_TYPE.GROUP_CONDITION',
85
+ CONDITION = 'QUERY_BUILDER_POST_FILTER_DND_TYPE.CONDITION',
86
+ BLANK_CONDITION = 'QUERY_BUILDER_POST_FILTER_DND_TYPE.BLANK_CONDITION',
87
87
  }
88
88
 
89
89
  export const getTypeFromDerivedProperty = (
@@ -62,9 +62,9 @@ import {
62
62
  import { instanceValue_setValues } from '../shared/ValueSpecificationModifierHelper.js';
63
63
 
64
64
  export enum QUERY_BUILDER_FILTER_DND_TYPE {
65
- GROUP_CONDITION = 'GROUP_CONDITION',
66
- CONDITION = 'CONDITION',
67
- BLANK_CONDITION = 'BLANK_CONDITION',
65
+ GROUP_CONDITION = 'QUERY_BUILDER_FILTER_DND_TYPE.GROUP_CONDITION',
66
+ CONDITION = 'QUERY_BUILDER_FILTER_DND_TYPE.CONDITION',
67
+ BLANK_CONDITION = 'QUERY_BUILDER_FILTER_DND_TYPE.BLANK_CONDITION',
68
68
  }
69
69
 
70
70
  export interface QueryBuilderFilterConditionDragSource {