@finos/legend-query-builder 4.14.19 → 4.14.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. package/lib/components/QueryLoader.d.ts.map +1 -1
  2. package/lib/components/QueryLoader.js +85 -36
  3. package/lib/components/QueryLoader.js.map +1 -1
  4. package/lib/components/result/QueryBuilderResultPanel.d.ts.map +1 -1
  5. package/lib/components/result/QueryBuilderResultPanel.js.map +1 -1
  6. package/lib/components/result/tds/QueryBuilderTDSGridResult.d.ts.map +1 -1
  7. package/lib/components/result/tds/QueryBuilderTDSGridResult.js +3 -2
  8. package/lib/components/result/tds/QueryBuilderTDSGridResult.js.map +1 -1
  9. package/lib/index.css +1 -17
  10. package/lib/index.css.map +1 -1
  11. package/lib/package.json +1 -1
  12. package/lib/stores/QueryBuilderResultState.d.ts +7 -4
  13. package/lib/stores/QueryBuilderResultState.d.ts.map +1 -1
  14. package/lib/stores/QueryBuilderResultState.js +20 -4
  15. package/lib/stores/QueryBuilderResultState.js.map +1 -1
  16. package/lib/stores/QueryBuilderState.d.ts +4 -2
  17. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  18. package/lib/stores/QueryBuilderState.js +13 -2
  19. package/lib/stores/QueryBuilderState.js.map +1 -1
  20. package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts +19 -1
  21. package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts.map +1 -1
  22. package/lib/stores/QueryLoaderState.d.ts +14 -4
  23. package/lib/stores/QueryLoaderState.d.ts.map +1 -1
  24. package/lib/stores/QueryLoaderState.js +35 -5
  25. package/lib/stores/QueryLoaderState.js.map +1 -1
  26. package/package.json +3 -3
  27. package/src/components/QueryLoader.tsx +279 -127
  28. package/src/components/result/QueryBuilderResultPanel.tsx +0 -1
  29. package/src/components/result/tds/QueryBuilderTDSGridResult.tsx +3 -2
  30. package/src/stores/QueryBuilderResultState.ts +27 -7
  31. package/src/stores/QueryBuilderState.ts +19 -2
  32. package/src/stores/QueryBuilder_LegendApplicationPlugin_Extension.ts +30 -1
  33. package/src/stores/QueryLoaderState.ts +64 -12
@@ -38,8 +38,11 @@ export class QueryLoaderState {
38
38
  showCurrentUserQueriesOnly = false; // TODO: if we start having more native filters, we should make them part of `extraFilters`
39
39
  extraFilters = new Map();
40
40
  extraFilterOptions = [];
41
+ extraQueryFilterOptionsRelatedToTemplateQuery = [];
41
42
  queries = [];
43
+ curatedTemplateQuerySepcifications = [];
42
44
  isQueryLoaderDialogOpen = false;
45
+ isCuratedTemplateToggled = false;
43
46
  showingDefaultQueries = true;
44
47
  showPreviewViewer = false;
45
48
  queryPreviewContent;
@@ -52,11 +55,14 @@ export class QueryLoaderState {
52
55
  showCurrentUserQueriesOnly: observable,
53
56
  showPreviewViewer: observable,
54
57
  searchText: observable,
58
+ isCuratedTemplateToggled: observable,
59
+ curatedTemplateQuerySepcifications: observable,
55
60
  setSearchText: action,
56
61
  setQueryLoaderDialogOpen: action,
57
62
  setQueries: action,
58
63
  setShowCurrentUserQueriesOnly: action,
59
64
  setShowPreviewViewer: action,
65
+ setIsCuratedTemplateToggled: action,
60
66
  searchQueries: flow,
61
67
  getPreviewQueryContent: flow,
62
68
  deleteQuery: flow,
@@ -76,6 +82,9 @@ export class QueryLoaderState {
76
82
  this.handleFetchDefaultQueriesFailure =
77
83
  options.handleFetchDefaultQueriesFailure;
78
84
  }
85
+ setIsCuratedTemplateToggled(val) {
86
+ this.isCuratedTemplateToggled = val;
87
+ }
79
88
  setSearchText(val) {
80
89
  this.searchText = val;
81
90
  }
@@ -93,14 +102,25 @@ export class QueryLoaderState {
93
102
  }
94
103
  reset() {
95
104
  this.setShowCurrentUserQueriesOnly(false);
105
+ this.setIsCuratedTemplateToggled(false);
96
106
  }
97
107
  *initialize(queryBuilderState) {
98
108
  this.queryBuilderState = queryBuilderState;
99
109
  this.extraFilterOptions = this.applicationStore.pluginManager
100
110
  .getApplicationPlugins()
101
111
  .flatMap((plugin) => plugin.getExtraLoadQueryFilterOptions?.() ?? []);
112
+ this.extraQueryFilterOptionsRelatedToTemplateQuery =
113
+ this.applicationStore.pluginManager
114
+ .getApplicationPlugins()
115
+ .flatMap((plugin) => plugin
116
+ .getQueryFilterOptionsRelatedToTemplateQuery?.()(guaranteeNonNullable(this.queryBuilderState))
117
+ .flat() ?? []);
102
118
  const extraFilters = this.extraFilterOptions.map((filterOption) => filterOption.label(guaranteeNonNullable(this.queryBuilderState)));
103
119
  extraFilters.forEach((filter) => filter && this.extraFilters.set(filter, false));
120
+ this.curatedTemplateQuerySepcifications =
121
+ this.applicationStore.pluginManager
122
+ .getApplicationPlugins()
123
+ .flatMap((plugin) => plugin.getCuratedTemplateQuerySpecifications?.() ?? []);
104
124
  }
105
125
  *searchQueries(searchText) {
106
126
  if (searchText.length < DEFAULT_TYPEAHEAD_SEARCH_MINIMUM_SEARCH_LENGTH &&
@@ -189,13 +209,23 @@ export class QueryLoaderState {
189
209
  this.deleteQueryState.fail();
190
210
  }
191
211
  }
192
- *getPreviewQueryContent(queryId) {
212
+ *getPreviewQueryContent(queryId, template) {
193
213
  this.previewQueryState.inProgress();
194
214
  try {
195
- const queryInfo = (yield this.graphManagerState.graphManager.getQueryInfo(queryId));
196
- this.queryPreviewContent = queryInfo;
197
- this.queryPreviewContent.content =
198
- (yield this.graphManagerState.graphManager.prettyLambdaContent(queryInfo.content));
215
+ if (queryId) {
216
+ const queryInfo = (yield this.graphManagerState.graphManager.getQueryInfo(queryId));
217
+ this.queryPreviewContent = queryInfo;
218
+ this.queryPreviewContent.content =
219
+ (yield this.graphManagerState.graphManager.prettyLambdaContent(queryInfo.content));
220
+ }
221
+ else if (template) {
222
+ this.queryPreviewContent = {
223
+ name: template.queryName,
224
+ content: '',
225
+ };
226
+ this.queryPreviewContent.content =
227
+ (yield this.graphManagerState.graphManager.lambdaToPureCode(template.queryContent, true));
228
+ }
199
229
  this.previewQueryState.pass();
200
230
  }
201
231
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"QueryLoaderState.js","sourceRoot":"","sources":["../../src/stores/QueryLoaderState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryLoaderState.js","sourceRoot":"","sources":["../../src/stores/QueryLoaderState.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-query-builder",
3
- "version": "4.14.19",
3
+ "version": "4.14.21",
4
4
  "description": "Legend query builder core",
5
5
  "keywords": [
6
6
  "legend",
@@ -44,8 +44,8 @@
44
44
  "dependencies": {
45
45
  "@finos/legend-application": "15.0.73",
46
46
  "@finos/legend-art": "7.1.25",
47
- "@finos/legend-graph": "31.9.6",
48
- "@finos/legend-lego": "1.2.19",
47
+ "@finos/legend-graph": "31.9.7",
48
+ "@finos/legend-lego": "1.2.20",
49
49
  "@finos/legend-server-depot": "6.0.38",
50
50
  "@finos/legend-shared": "10.0.34",
51
51
  "@finos/legend-storage": "3.0.84",
@@ -41,11 +41,12 @@ import {
41
41
  ThinChevronRightIcon,
42
42
  InfoCircleIcon,
43
43
  } from '@finos/legend-art';
44
- import type { LightQuery } from '@finos/legend-graph';
44
+ import type { LightQuery, RawLambda } from '@finos/legend-graph';
45
45
  import {
46
46
  debounce,
47
47
  formatDistanceToNow,
48
48
  guaranteeNonNullable,
49
+ isNonNullable,
49
50
  quantifyList,
50
51
  } from '@finos/legend-shared';
51
52
  import { flowResult } from 'mobx';
@@ -110,6 +111,21 @@ export const QueryLoader = observer(
110
111
  const searchInputRef = useRef<HTMLInputElement>(null);
111
112
  const queryRenameInputRef = useRef<HTMLInputElement>(null);
112
113
  const results = queryLoaderState.queries;
114
+ const curatedTemplateQueries =
115
+ queryLoaderState.curatedTemplateQuerySepcifications
116
+ .map((s) =>
117
+ queryLoaderState.queryBuilderState
118
+ ? s.getCuratedTemplateQueries(queryLoaderState.queryBuilderState)
119
+ : [],
120
+ )
121
+ .flat();
122
+ const loadCuratedTemplateQuery =
123
+ queryLoaderState.curatedTemplateQuerySepcifications
124
+ // already using an arrow function suggested by @typescript-eslint/unbound-method
125
+ // eslint-disable-next-line
126
+ .map((s) => () => s.loadCuratedTemplateQuery)
127
+ .filter(isNonNullable)[0];
128
+
113
129
  const [isMineOnly, setIsMineOnly] = useState(false);
114
130
  const [showQueryNameEditInput, setShowQueryNameEditInput] = useState<
115
131
  number | undefined
@@ -173,7 +189,25 @@ export const QueryLoader = observer(
173
189
  debouncedLoadQueries.cancel();
174
190
  debouncedLoadQueries(queryLoaderState.searchText);
175
191
  };
176
-
192
+ const toggleCuratedTemplate = (): void => {
193
+ Array.from(queryLoaderState.extraFilters).map(([key, value]) =>
194
+ queryLoaderState.extraFilters.set(key, false),
195
+ );
196
+ queryLoaderState.setShowCurrentUserQueriesOnly(false);
197
+ setIsMineOnly(false);
198
+ queryLoaderState.extraQueryFilterOptionsRelatedToTemplateQuery.forEach(
199
+ (op) =>
200
+ queryLoaderState.extraFilters.set(
201
+ op,
202
+ !queryLoaderState.isCuratedTemplateToggled,
203
+ ),
204
+ );
205
+ queryLoaderState.showingDefaultQueries =
206
+ queryLoaderState.isCuratedTemplateToggled;
207
+ queryLoaderState.setIsCuratedTemplateToggled(
208
+ !queryLoaderState.isCuratedTemplateToggled,
209
+ );
210
+ };
177
211
  useEffect(() => {
178
212
  flowResult(queryLoaderState.searchQueries('')).catch(
179
213
  applicationStore.alertUnhandledError,
@@ -207,10 +241,16 @@ export const QueryLoader = observer(
207
241
  }
208
242
  };
209
243
 
210
- const showPreview = (queryId: string): void => {
211
- flowResult(queryLoaderState.getPreviewQueryContent(queryId)).catch(
212
- applicationStore.alertUnhandledError,
213
- );
244
+ const showPreview = (
245
+ queryId: string | undefined,
246
+ template?: {
247
+ queryName: string;
248
+ queryContent: RawLambda;
249
+ },
250
+ ): void => {
251
+ flowResult(
252
+ queryLoaderState.getPreviewQueryContent(queryId, template),
253
+ ).catch(applicationStore.alertUnhandledError);
214
254
  queryLoaderState.setShowPreviewViewer(true);
215
255
  };
216
256
 
@@ -254,6 +294,12 @@ export const QueryLoader = observer(
254
294
  'query-loader__filter__toggler__btn--toggled': isMineOnly,
255
295
  })}
256
296
  onClick={toggleShowCurrentUserQueriesOnly}
297
+ disabled={queryLoaderState.isCuratedTemplateToggled}
298
+ title={
299
+ queryLoaderState.isCuratedTemplateToggled
300
+ ? 'current fitler is disabled when `Curated Template Query` is on'
301
+ : 'click to add filter'
302
+ }
257
303
  tabIndex={-1}
258
304
  >
259
305
  Mine Only
@@ -267,6 +313,12 @@ export const QueryLoader = observer(
267
313
  className={clsx('query-loader__filter__toggler__btn', {
268
314
  'query-loader__filter__toggler__btn--toggled': value,
269
315
  })}
316
+ disabled={queryLoaderState.isCuratedTemplateToggled}
317
+ title={
318
+ queryLoaderState.isCuratedTemplateToggled
319
+ ? 'current fitler is disabled when `Curated Template Query` is on'
320
+ : 'click to add filter'
321
+ }
270
322
  onClick={(): void => toggleExtraFilters(key)}
271
323
  tabIndex={-1}
272
324
  >
@@ -276,6 +328,21 @@ export const QueryLoader = observer(
276
328
  )}
277
329
  </div>
278
330
  )}
331
+ {queryLoaderState.extraQueryFilterOptionsRelatedToTemplateQuery
332
+ .length > 0 && (
333
+ <div className="query-loader__filter__extra__filters">
334
+ <button
335
+ className={clsx('query-loader__filter__toggler__btn', {
336
+ 'query-loader__filter__toggler__btn--toggled':
337
+ queryLoaderState.isCuratedTemplateToggled,
338
+ })}
339
+ onClick={toggleCuratedTemplate}
340
+ tabIndex={-1}
341
+ >
342
+ Curated Template Query
343
+ </button>
344
+ </div>
345
+ )}
279
346
  </div>
280
347
  </div>
281
348
  </div>
@@ -297,7 +364,20 @@ export const QueryLoader = observer(
297
364
  queryLoaderState.generateDefaultQueriesSummaryText?.(
298
365
  results,
299
366
  ) ?? 'Refine your search to get better matches'
300
- ) : results.length >= QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT ? (
367
+ ) : !queryLoaderState.isCuratedTemplateToggled ? (
368
+ results.length >= QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT ? (
369
+ <>
370
+ {`Found ${QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT}+ matches`}{' '}
371
+ <InfoCircleIcon
372
+ title="Some queries are not listed, refine your search to get better matches"
373
+ className="query-loader__results__summary__info"
374
+ />
375
+ </>
376
+ ) : (
377
+ `Found ${quantifyList(results, 'match', 'matches')}`
378
+ )
379
+ ) : curatedTemplateQueries.length >=
380
+ QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT ? (
301
381
  <>
302
382
  {`Found ${QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT}+ matches`}{' '}
303
383
  <InfoCircleIcon
@@ -306,139 +386,211 @@ export const QueryLoader = observer(
306
386
  />
307
387
  </>
308
388
  ) : (
309
- `Found ${quantifyList(results, 'match', 'matches')}`
389
+ `Found ${quantifyList(
390
+ curatedTemplateQueries,
391
+ 'match',
392
+ 'matches',
393
+ )}`
310
394
  )}
311
395
  </div>
312
- {results
313
- .slice(0, QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT)
314
- .map((query, idx) => (
315
- <div
316
- className="query-loader__result"
317
- title={`Click to ${loadActionLabel}...`}
318
- key={query.id}
319
- onClick={() => queryLoaderState.loadQuery(query)}
320
- >
321
- <div className="query-loader__result__content">
322
- {showQueryNameEditInput === idx ? (
323
- <div className="query-loader__result__title__editor">
324
- <input
325
- className="query-loader__result__title__editor__input input--dark"
326
- spellCheck={false}
327
- ref={queryRenameInputRef}
328
- value={queryNameInputValue}
329
- onChange={changeQueryNameInputValue}
330
- onKeyDown={(event) => {
331
- if (event.code === 'Enter') {
332
- event.stopPropagation();
333
- renameQuery(query)();
334
- } else if (event.code === 'Escape') {
335
- event.stopPropagation();
336
- hideEditQueryNameInput();
337
- }
338
- }}
339
- onBlur={() => hideEditQueryNameInput()}
340
- // avoid clicking on the input causing the call to load query
341
- onClick={(event) => event.stopPropagation()}
342
- />
396
+ {!queryLoaderState.isCuratedTemplateToggled &&
397
+ results
398
+ .slice(0, QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT)
399
+ .map((query, idx) => (
400
+ <div
401
+ className="query-loader__result"
402
+ title={`Click to ${loadActionLabel}...`}
403
+ key={query.id}
404
+ onClick={() => queryLoaderState.loadQuery(query)}
405
+ >
406
+ <div className="query-loader__result__content">
407
+ {showQueryNameEditInput === idx ? (
408
+ <div className="query-loader__result__title__editor">
409
+ <input
410
+ className="query-loader__result__title__editor__input input--dark"
411
+ spellCheck={false}
412
+ ref={queryRenameInputRef}
413
+ value={queryNameInputValue}
414
+ onChange={changeQueryNameInputValue}
415
+ onKeyDown={(event) => {
416
+ if (event.code === 'Enter') {
417
+ event.stopPropagation();
418
+ renameQuery(query)();
419
+ } else if (event.code === 'Escape') {
420
+ event.stopPropagation();
421
+ hideEditQueryNameInput();
422
+ }
423
+ }}
424
+ onBlur={() => hideEditQueryNameInput()}
425
+ // avoid clicking on the input causing the call to load query
426
+ onClick={(event) => event.stopPropagation()}
427
+ />
428
+ </div>
429
+ ) : (
430
+ <div
431
+ className="query-loader__result__title"
432
+ title={query.name}
433
+ >
434
+ {query.name}
435
+ </div>
436
+ )}
437
+ <div className="query-loader__result__description">
438
+ <div className="query-loader__result__description__date__icon">
439
+ <LastModifiedIcon />
440
+ </div>
441
+ <div className="query-loader__result__description__date">
442
+ {query.lastUpdatedAt
443
+ ? formatDistanceToNow(
444
+ new Date(query.lastUpdatedAt),
445
+ {
446
+ includeSeconds: true,
447
+ addSuffix: true,
448
+ },
449
+ )
450
+ : '(unknown)'}
451
+ </div>
452
+ <div
453
+ className={clsx(
454
+ 'query-loader__result__description__author__icon',
455
+ {
456
+ 'query-loader__result__description__author__icon--owner':
457
+ query.isCurrentUserQuery,
458
+ },
459
+ )}
460
+ >
461
+ <UserIcon />
462
+ </div>
463
+ <div className="query-loader__result__description__author__name">
464
+ {query.isCurrentUserQuery ? (
465
+ <div
466
+ title={query.owner}
467
+ className="query-loader__result__description__owner"
468
+ >
469
+ Me
470
+ </div>
471
+ ) : (
472
+ query.owner
473
+ )}
474
+ </div>
343
475
  </div>
344
- ) : (
476
+ </div>
477
+ <DropdownMenu
478
+ className="query-loader__result__actions-menu"
479
+ title="More Actions..."
480
+ content={
481
+ <MenuContent>
482
+ <MenuContentItem
483
+ onClick={(): void => showPreview(query.id)}
484
+ >
485
+ Show Query Preview
486
+ </MenuContentItem>
487
+ {!queryLoaderState.isReadOnly && (
488
+ <MenuContentItem
489
+ disabled={!query.isCurrentUserQuery}
490
+ onClick={deleteQuery(query)}
491
+ >
492
+ Delete
493
+ </MenuContentItem>
494
+ )}
495
+ {!queryLoaderState.isReadOnly && (
496
+ <MenuContentItem
497
+ disabled={!query.isCurrentUserQuery}
498
+ onClick={showEditQueryNameInput(
499
+ query.name,
500
+ idx,
501
+ )}
502
+ >
503
+ Rename
504
+ </MenuContentItem>
505
+ )}
506
+ </MenuContent>
507
+ }
508
+ menuProps={{
509
+ anchorOrigin: {
510
+ vertical: 'bottom',
511
+ horizontal: 'left',
512
+ },
513
+ transformOrigin: {
514
+ vertical: 'top',
515
+ horizontal: 'left',
516
+ },
517
+ elevation: 7,
518
+ }}
519
+ >
520
+ <MoreVerticalIcon />
521
+ </DropdownMenu>
522
+ <div className="query-loader__result__arrow">
523
+ <ThinChevronRightIcon />
524
+ </div>
525
+ </div>
526
+ ))}
527
+ {queryLoaderState.queryBuilderState &&
528
+ queryLoaderState.isCuratedTemplateToggled &&
529
+ loadCuratedTemplateQuery &&
530
+ curatedTemplateQueries
531
+ .slice(0, QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT)
532
+ .map((templateQuery, idx) => (
533
+ <div
534
+ className="query-loader__result"
535
+ title={`Click to ${loadActionLabel}...`}
536
+ key={templateQuery.title}
537
+ onClick={() => {
538
+ loadCuratedTemplateQuery()(
539
+ templateQuery,
540
+ guaranteeNonNullable(
541
+ queryLoaderState.queryBuilderState,
542
+ ),
543
+ );
544
+ queryLoaderState.setQueryLoaderDialogOpen(false);
545
+ }}
546
+ >
547
+ <div className="query-loader__result__content">
345
548
  <div
346
549
  className="query-loader__result__title"
347
- title={query.name}
348
- >
349
- {query.name}
350
- </div>
351
- )}
352
- <div className="query-loader__result__description">
353
- <div className="query-loader__result__description__date__icon">
354
- <LastModifiedIcon />
355
- </div>
356
- <div className="query-loader__result__description__date">
357
- {query.lastUpdatedAt
358
- ? formatDistanceToNow(
359
- new Date(query.lastUpdatedAt),
360
- {
361
- includeSeconds: true,
362
- addSuffix: true,
363
- },
364
- )
365
- : '(unknown)'}
366
- </div>
367
- <div
368
- className={clsx(
369
- 'query-loader__result__description__author__icon',
370
- {
371
- 'query-loader__result__description__author__icon--owner':
372
- query.isCurrentUserQuery,
373
- },
374
- )}
550
+ title={templateQuery.title}
375
551
  >
376
- <UserIcon />
552
+ {templateQuery.title}
377
553
  </div>
378
- <div className="query-loader__result__description__author__name">
379
- {query.isCurrentUserQuery ? (
380
- <div
381
- title={query.owner}
382
- className="query-loader__result__description__owner"
383
- >
384
- Me
385
- </div>
386
- ) : (
387
- query.owner
388
- )}
554
+ <div className="query-loader__result__description">
555
+ {templateQuery.description}
389
556
  </div>
390
557
  </div>
391
- </div>
392
- <DropdownMenu
393
- className="query-loader__result__actions-menu"
394
- title="More Actions..."
395
- content={
396
- <MenuContent>
397
- <MenuContentItem
398
- onClick={(): void => showPreview(query.id)}
399
- >
400
- Show Query Preview
401
- </MenuContentItem>
402
- {!queryLoaderState.isReadOnly && (
403
- <MenuContentItem
404
- disabled={!query.isCurrentUserQuery}
405
- onClick={deleteQuery(query)}
406
- >
407
- Delete
408
- </MenuContentItem>
409
- )}
410
- {!queryLoaderState.isReadOnly && (
558
+ <DropdownMenu
559
+ className="query-loader__result__actions-menu"
560
+ title="More Actions..."
561
+ content={
562
+ <MenuContent>
411
563
  <MenuContentItem
412
- disabled={!query.isCurrentUserQuery}
413
- onClick={showEditQueryNameInput(
414
- query.name,
415
- idx,
416
- )}
564
+ onClick={(): void =>
565
+ showPreview(undefined, {
566
+ queryContent: templateQuery.query,
567
+ queryName: templateQuery.title,
568
+ })
569
+ }
417
570
  >
418
- Rename
571
+ Show Query Preview
419
572
  </MenuContentItem>
420
- )}
421
- </MenuContent>
422
- }
423
- menuProps={{
424
- anchorOrigin: {
425
- vertical: 'bottom',
426
- horizontal: 'left',
427
- },
428
- transformOrigin: {
429
- vertical: 'top',
430
- horizontal: 'left',
431
- },
432
- elevation: 7,
433
- }}
434
- >
435
- <MoreVerticalIcon />
436
- </DropdownMenu>
437
- <div className="query-loader__result__arrow">
438
- <ThinChevronRightIcon />
573
+ </MenuContent>
574
+ }
575
+ menuProps={{
576
+ anchorOrigin: {
577
+ vertical: 'bottom',
578
+ horizontal: 'left',
579
+ },
580
+ transformOrigin: {
581
+ vertical: 'top',
582
+ horizontal: 'left',
583
+ },
584
+ elevation: 7,
585
+ }}
586
+ >
587
+ <MoreVerticalIcon />
588
+ </DropdownMenu>
589
+ <div className="query-loader__result__arrow">
590
+ <ThinChevronRightIcon />
591
+ </div>
439
592
  </div>
440
- </div>
441
- ))}
593
+ ))}
442
594
  </>
443
595
  )}
444
596
  {!queryLoaderState.searchQueriesState.hasCompleted && (
@@ -305,7 +305,6 @@ export const QueryBuilderResultPanel = observer(
305
305
  !queryBuilderState.isLocalModeEnabled,
306
306
  );
307
307
  };
308
-
309
308
  return (
310
309
  <div
311
310
  data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_RESULT_PANEL}