@thoughtspot/visual-embed-sdk 1.41.1 → 1.42.1-HE2
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.
- package/cjs/package.json +9 -9
- package/cjs/src/css-variables.d.ts +52 -14
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +20 -0
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +7 -1
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +52 -0
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.d.ts +1 -0
- package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +7 -3
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +1 -0
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +7 -2
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts +3 -3
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.js +6 -6
- package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +1 -0
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +10 -2
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +35 -0
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +1 -0
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js +10 -6
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts +1 -0
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +11 -7
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +1 -0
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +7 -8
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +20 -5
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +84 -31
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +83 -0
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/errors.d.ts +1 -0
- package/cjs/src/errors.d.ts.map +1 -1
- package/cjs/src/errors.js +1 -0
- package/cjs/src/errors.js.map +1 -1
- package/cjs/src/react/all-types-export.spec.js +1 -1
- package/cjs/src/react/all-types-export.spec.js.map +1 -1
- package/cjs/src/react/util.js.map +1 -1
- package/cjs/src/react/util.spec.d.ts +2 -0
- package/cjs/src/react/util.spec.d.ts.map +1 -0
- package/cjs/src/react/util.spec.js +78 -0
- package/cjs/src/react/util.spec.js.map +1 -0
- package/cjs/src/types.d.ts +153 -64
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +136 -62
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/processTrigger.d.ts +2 -1
- package/cjs/src/utils/processTrigger.d.ts.map +1 -1
- package/cjs/src/utils/processTrigger.js +4 -2
- package/cjs/src/utils/processTrigger.js.map +1 -1
- package/dist/{index-DQueHwfQ.js → index-CWQnMX2L.js} +1 -1
- package/dist/index-Djtv-y7A.js +7371 -0
- package/dist/src/css-variables.d.ts +52 -14
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +20 -0
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/bodyless-conversation.d.ts +1 -0
- package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +1 -0
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/host-event-client.d.ts +3 -3
- package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +1 -0
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +1 -0
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +1 -0
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +1 -0
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +20 -5
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/react/util.spec.d.ts +2 -0
- package/dist/src/react/util.spec.d.ts.map +1 -0
- package/dist/src/types.d.ts +153 -64
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/processTrigger.d.ts +2 -1
- package/dist/src/utils/processTrigger.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +294 -134
- package/dist/tsembed-react.js +293 -133
- package/dist/tsembed.es.js +294 -134
- package/dist/tsembed.js +293 -133
- package/dist/visual-embed-sdk-react-full.d.ts +9401 -9916
- package/dist/visual-embed-sdk-react.d.ts +9273 -9922
- package/dist/visual-embed-sdk.d.ts +9440 -9533
- package/lib/package.json +9 -9
- package/lib/src/css-variables.d.ts +52 -14
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +20 -0
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +7 -1
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +52 -0
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.d.ts +1 -0
- package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +7 -3
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +1 -0
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +7 -2
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.d.ts +3 -3
- package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.js +6 -6
- package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +1 -0
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +10 -2
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +35 -0
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/sage.d.ts +1 -0
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js +10 -6
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +1 -0
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +11 -7
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +1 -0
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +7 -8
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +20 -5
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +84 -31
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +83 -0
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/errors.d.ts +1 -0
- package/lib/src/errors.d.ts.map +1 -1
- package/lib/src/errors.js +1 -0
- package/lib/src/errors.js.map +1 -1
- package/lib/src/react/all-types-export.spec.js +1 -1
- package/lib/src/react/all-types-export.spec.js.map +1 -1
- package/lib/src/react/util.js.map +1 -1
- package/lib/src/react/util.spec.d.ts +2 -0
- package/lib/src/react/util.spec.d.ts.map +1 -0
- package/lib/src/react/util.spec.js +76 -0
- package/lib/src/react/util.spec.js.map +1 -0
- package/lib/src/types.d.ts +153 -64
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +136 -62
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/processTrigger.d.ts +2 -1
- package/lib/src/utils/processTrigger.d.ts.map +1 -1
- package/lib/src/utils/processTrigger.js +4 -2
- package/lib/src/utils/processTrigger.js.map +1 -1
- package/package.json +9 -9
- package/src/css-variables.ts +53 -16
- package/src/embed/app.spec.ts +73 -0
- package/src/embed/app.ts +30 -0
- package/src/embed/bodyless-conversation.ts +8 -3
- package/src/embed/conversation.ts +17 -2
- package/src/embed/hostEventClient/host-event-client.ts +7 -3
- package/src/embed/liveboard.spec.ts +44 -0
- package/src/embed/liveboard.ts +12 -1
- package/src/embed/sage.ts +14 -9
- package/src/embed/search-bar.tsx +14 -7
- package/src/embed/search.ts +18 -7
- package/src/embed/ts-embed.spec.ts +112 -1
- package/src/embed/ts-embed.ts +104 -37
- package/src/errors.ts +1 -0
- package/src/react/all-types-export.spec.ts +1 -1
- package/src/react/util.spec.tsx +88 -0
- package/src/react/util.ts +3 -3
- package/src/types.ts +211 -121
- package/src/utils/processTrigger.ts +5 -2
- package/lib/src/visual-embed-sdk.d.ts +0 -9779
package/src/css-variables.ts
CHANGED
|
@@ -536,51 +536,71 @@ export interface CustomCssVariables {
|
|
|
536
536
|
|
|
537
537
|
/**
|
|
538
538
|
* Padding of the groups in the Liveboard.
|
|
539
|
+
*
|
|
540
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
539
541
|
*/
|
|
540
542
|
'--ts-var-liveboard-group-padding'?: string;
|
|
541
543
|
|
|
542
544
|
/**
|
|
543
545
|
* Padding of the title of the groups in the Liveboard.
|
|
546
|
+
*
|
|
547
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
544
548
|
*/
|
|
545
549
|
'--ts-var-liveboard-group-title-padding'?: string;
|
|
546
550
|
|
|
547
551
|
/**
|
|
548
552
|
* Font size of the title of the groups in the Liveboard.
|
|
553
|
+
*
|
|
554
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
549
555
|
*/
|
|
550
556
|
'--ts-var-liveboard-group-title-font-size'?: string;
|
|
551
557
|
|
|
552
558
|
/**
|
|
553
559
|
* Font weight of the title of the groups in the Liveboard.
|
|
560
|
+
*
|
|
561
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
554
562
|
*/
|
|
555
563
|
'--ts-var-liveboard-group-title-font-weight'?: string;
|
|
556
564
|
|
|
557
565
|
/**
|
|
558
566
|
* Font size of the title of the tiles inside the groups in the Liveboard.
|
|
567
|
+
*
|
|
568
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
559
569
|
*/
|
|
560
570
|
'--ts-var-liveboard-group-tile-title-font-size'?: string;
|
|
561
571
|
|
|
562
572
|
/**
|
|
563
573
|
* Font weight of the title of the tiles inside the groups in the Liveboard.
|
|
574
|
+
*
|
|
575
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
564
576
|
*/
|
|
565
577
|
'--ts-var-liveboard-group-tile-title-font-weight'?: string;
|
|
566
578
|
|
|
567
579
|
/**
|
|
568
580
|
* Font size of the description of the groups in the Liveboard.
|
|
581
|
+
*
|
|
582
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
569
583
|
*/
|
|
570
584
|
'--ts-var-liveboard-group-description-font-size'?: string;
|
|
571
585
|
|
|
572
586
|
/**
|
|
573
587
|
* Font weight of the description of the groups in the Liveboard.
|
|
588
|
+
*
|
|
589
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
574
590
|
*/
|
|
575
591
|
'--ts-var-liveboard-group-description-font-weight'?: string;
|
|
576
592
|
|
|
577
593
|
/**
|
|
578
|
-
* Border of the tiles in the Liveboard.
|
|
594
|
+
* Border of the group tiles in the Liveboard.
|
|
595
|
+
*
|
|
596
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
579
597
|
*/
|
|
580
598
|
'--ts-var-liveboard-group-tile-border'?: string;
|
|
581
599
|
|
|
582
600
|
/**
|
|
583
|
-
* Padding of the tiles in the Liveboard.
|
|
601
|
+
* Padding of the group tiles in the Liveboard.
|
|
602
|
+
*
|
|
603
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
584
604
|
*/
|
|
585
605
|
'--ts-var-liveboard-group-tile-padding'?: string;
|
|
586
606
|
|
|
@@ -591,11 +611,15 @@ export interface CustomCssVariables {
|
|
|
591
611
|
|
|
592
612
|
/**
|
|
593
613
|
* Background color of the groups in the Liveboard.
|
|
614
|
+
*
|
|
615
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
594
616
|
*/
|
|
595
617
|
'--ts-var-liveboard-group-background'?: string;
|
|
596
618
|
|
|
597
619
|
/**
|
|
598
620
|
* Border color of the groups in the Liveboard.
|
|
621
|
+
*
|
|
622
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
599
623
|
*/
|
|
600
624
|
'--ts-var-liveboard-group-border-color'?: string;
|
|
601
625
|
|
|
@@ -611,54 +635,67 @@ export interface CustomCssVariables {
|
|
|
611
635
|
|
|
612
636
|
/**
|
|
613
637
|
* Font color of the title of the groups in the Liveboard.
|
|
638
|
+
*
|
|
639
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
614
640
|
*/
|
|
615
641
|
'--ts-var-liveboard-group-title-font-color'?: string;
|
|
616
642
|
|
|
617
643
|
/**
|
|
618
644
|
* Font color of the description of the groups in the Liveboard.
|
|
645
|
+
*
|
|
646
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
619
647
|
*/
|
|
620
648
|
'--ts-var-liveboard-group-description-font-color'?: string;
|
|
621
649
|
|
|
622
650
|
/**
|
|
623
651
|
* Font color of the title of the tiles inside the groups in the Liveboard.
|
|
652
|
+
*
|
|
653
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
624
654
|
*/
|
|
625
655
|
'--ts-var-liveboard-group-tile-title-font-color'?: string;
|
|
626
656
|
|
|
657
|
+
/**
|
|
658
|
+
* Font color of the description of the tiles inside the groups in the Liveboard.
|
|
659
|
+
*
|
|
660
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
661
|
+
*/
|
|
662
|
+
'--ts-var-liveboard-group-tile-description-font-color'?: string;
|
|
663
|
+
|
|
627
664
|
/**
|
|
628
665
|
* Background color of the tiles inside the groups in the Liveboard.
|
|
666
|
+
*
|
|
667
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
629
668
|
*/
|
|
630
669
|
'--ts-var-liveboard-group-tile-background'?: string;
|
|
631
670
|
|
|
632
671
|
/**
|
|
633
|
-
* Background color of the chips in the Liveboard.
|
|
672
|
+
* Background color of the filter chips in the Liveboard.
|
|
673
|
+
*
|
|
674
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
634
675
|
*/
|
|
635
676
|
'--ts-var-liveboard-chip-background'?: string;
|
|
636
677
|
|
|
637
678
|
/**
|
|
638
|
-
* Font color of the chips in the Liveboard.
|
|
679
|
+
* Font color of the filter chips in the Liveboard.
|
|
680
|
+
*
|
|
681
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
639
682
|
*/
|
|
640
683
|
'--ts-var-liveboard-chip-color'?: string;
|
|
641
684
|
|
|
642
685
|
/**
|
|
643
|
-
* Background color of the chips in the Liveboard on hover.
|
|
686
|
+
* Background color of the filter chips in the Liveboard on hover.
|
|
687
|
+
*
|
|
688
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
644
689
|
*/
|
|
645
690
|
'--ts-var-liveboard-chip--hover-background'?: string;
|
|
646
691
|
|
|
647
692
|
/**
|
|
648
|
-
*
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
/**
|
|
653
|
-
* Background color of the chips in the Liveboard on active.
|
|
693
|
+
* Background color of the filter chips in the Liveboard on active.
|
|
694
|
+
*
|
|
695
|
+
* Please enable the Liveboard styling and grouping feature in your ThoughtSpot instance and then set the isLiveboardStylingAndGrouping SDK flag to true to start modifying this CSS variable.
|
|
654
696
|
*/
|
|
655
697
|
'--ts-var-liveboard-chip--active-background'?: string;
|
|
656
698
|
|
|
657
|
-
/**
|
|
658
|
-
* Font color of the chips in the Liveboard on active.
|
|
659
|
-
*/
|
|
660
|
-
'--ts-var-liveboard-chip--active-color'?: string;
|
|
661
|
-
|
|
662
699
|
/**
|
|
663
700
|
* Width of the side panel in the Liveboard.
|
|
664
701
|
*/
|
package/src/embed/app.spec.ts
CHANGED
|
@@ -358,6 +358,34 @@ describe('App embed tests', () => {
|
|
|
358
358
|
});
|
|
359
359
|
});
|
|
360
360
|
|
|
361
|
+
test('should set isLinkParametersEnabled to true in url', async () => {
|
|
362
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
363
|
+
...defaultViewConfig,
|
|
364
|
+
isLinkParametersEnabled: true,
|
|
365
|
+
} as AppViewConfig);
|
|
366
|
+
appEmbed.render();
|
|
367
|
+
await executeAfterWait(() => {
|
|
368
|
+
expectUrlMatchesWithParams(
|
|
369
|
+
getIFrameSrc(),
|
|
370
|
+
`http://${thoughtSpotHost}/?embedApp=true&profileAndHelpInNavBarHidden=false&isLinkParametersEnabled=true${defaultParamsPost}#/home`,
|
|
371
|
+
);
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
test('should set isLinkParametersEnabled to false in url', async () => {
|
|
376
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
377
|
+
...defaultViewConfig,
|
|
378
|
+
isLinkParametersEnabled: false,
|
|
379
|
+
} as AppViewConfig);
|
|
380
|
+
appEmbed.render();
|
|
381
|
+
await executeAfterWait(() => {
|
|
382
|
+
expectUrlMatchesWithParams(
|
|
383
|
+
getIFrameSrc(),
|
|
384
|
+
`http://${thoughtSpotHost}/?embedApp=true&profileAndHelpInNavBarHidden=false&isLinkParametersEnabled=false${defaultParamsPost}#/home`,
|
|
385
|
+
);
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
|
|
361
389
|
test('should set liveboardXLSXCSVDownload to true in url', async () => {
|
|
362
390
|
const appEmbed = new AppEmbed(getRootEl(), {
|
|
363
391
|
...defaultViewConfig,
|
|
@@ -402,6 +430,51 @@ describe('App embed tests', () => {
|
|
|
402
430
|
});
|
|
403
431
|
});
|
|
404
432
|
|
|
433
|
+
test('Should add the hideTagFilterChips true to the iframe src', async () => {
|
|
434
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
435
|
+
...defaultViewConfig,
|
|
436
|
+
showPrimaryNavbar: false,
|
|
437
|
+
hideTagFilterChips: true,
|
|
438
|
+
} as AppViewConfig);
|
|
439
|
+
|
|
440
|
+
appEmbed.render();
|
|
441
|
+
await executeAfterWait(() => {
|
|
442
|
+
expectUrlMatchesWithParams(
|
|
443
|
+
getIFrameSrc(),
|
|
444
|
+
`http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${defaultParams}&hideTagFilterChips=true${defaultParamsPost}#/home`,
|
|
445
|
+
);
|
|
446
|
+
});
|
|
447
|
+
});
|
|
448
|
+
|
|
449
|
+
test('Should add the hideTagFilterChips false to the iframe src', async () => {
|
|
450
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
451
|
+
...defaultViewConfig,
|
|
452
|
+
showPrimaryNavbar: false,
|
|
453
|
+
hideTagFilterChips: false,
|
|
454
|
+
} as AppViewConfig);
|
|
455
|
+
appEmbed.render();
|
|
456
|
+
await executeAfterWait(() => {
|
|
457
|
+
expectUrlMatchesWithParams(
|
|
458
|
+
getIFrameSrc(),
|
|
459
|
+
`http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${defaultParams}&hideTagFilterChips=false${defaultParamsPost}#/home`,
|
|
460
|
+
);
|
|
461
|
+
});
|
|
462
|
+
});
|
|
463
|
+
|
|
464
|
+
test('Should not add hideTagFilterChips if it is undefined', async () => {
|
|
465
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
466
|
+
...defaultViewConfig,
|
|
467
|
+
showPrimaryNavbar: false,
|
|
468
|
+
} as AppViewConfig);
|
|
469
|
+
appEmbed.render();
|
|
470
|
+
await executeAfterWait(() => {
|
|
471
|
+
expectUrlMatchesWithParams(
|
|
472
|
+
getIFrameSrc(),
|
|
473
|
+
`http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${defaultParams}${defaultParamsPost}#/home`,
|
|
474
|
+
);
|
|
475
|
+
});
|
|
476
|
+
});
|
|
477
|
+
|
|
405
478
|
test('Should add enableSearchAssist flagto the iframe src', async () => {
|
|
406
479
|
const appEmbed = new AppEmbed(getRootEl(), {
|
|
407
480
|
...defaultViewConfig,
|
package/src/embed/app.ts
CHANGED
|
@@ -367,6 +367,26 @@ export interface AppViewConfig extends AllEmbedViewConfig {
|
|
|
367
367
|
* ```
|
|
368
368
|
*/
|
|
369
369
|
tag?: string;
|
|
370
|
+
/**
|
|
371
|
+
* Hide tag filter chips that appear when content is filtered by tags.
|
|
372
|
+
* When enabled, this automatically:
|
|
373
|
+
* - Hides tag filter indicators/chips from the UI
|
|
374
|
+
*
|
|
375
|
+
* This provides a clean interface without tag-related UI elements.
|
|
376
|
+
*
|
|
377
|
+
* Supported embed types: `AppEmbed`
|
|
378
|
+
* @version SDK: 1.44.0 | ThoughtSpot: 10.15.0.cl
|
|
379
|
+
* @example
|
|
380
|
+
* ```js
|
|
381
|
+
* // Simple usage - automatically hides all tag-related UI
|
|
382
|
+
* const embed = new AppEmbed('#tsEmbed', {
|
|
383
|
+
* ... // other embed view config
|
|
384
|
+
* tag: 'Some Tag',
|
|
385
|
+
* hideTagFilterChips: true, // This is all you need!
|
|
386
|
+
* });
|
|
387
|
+
* ```
|
|
388
|
+
*/
|
|
389
|
+
hideTagFilterChips?: boolean;
|
|
370
390
|
/**
|
|
371
391
|
* The array of GUIDs to be hidden
|
|
372
392
|
*
|
|
@@ -625,6 +645,7 @@ export class AppEmbed extends V1Embed {
|
|
|
625
645
|
protected getEmbedParams() {
|
|
626
646
|
const {
|
|
627
647
|
tag,
|
|
648
|
+
hideTagFilterChips,
|
|
628
649
|
hideObjects,
|
|
629
650
|
liveboardV2,
|
|
630
651
|
showPrimaryNavbar,
|
|
@@ -663,6 +684,7 @@ export class AppEmbed extends V1Embed {
|
|
|
663
684
|
liveboardXLSXCSVDownload = false,
|
|
664
685
|
isLiveboardStylingAndGroupingEnabled,
|
|
665
686
|
isPNGInScheduledEmailsEnabled = false,
|
|
687
|
+
isLinkParametersEnabled,
|
|
666
688
|
} = this.viewConfig;
|
|
667
689
|
|
|
668
690
|
let params: any = {};
|
|
@@ -749,6 +771,14 @@ export class AppEmbed extends V1Embed {
|
|
|
749
771
|
if (isPNGInScheduledEmailsEnabled !== undefined) {
|
|
750
772
|
params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;
|
|
751
773
|
}
|
|
774
|
+
|
|
775
|
+
if (hideTagFilterChips !== undefined) {
|
|
776
|
+
params[Param.HideTagFilterChips] = hideTagFilterChips;
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
if (isLinkParametersEnabled !== undefined) {
|
|
780
|
+
params[Param.isLinkParametersEnabled] = isLinkParametersEnabled;
|
|
781
|
+
}
|
|
752
782
|
|
|
753
783
|
params[Param.DataPanelV2Enabled] = dataPanelV2;
|
|
754
784
|
params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
|
|
@@ -39,6 +39,13 @@ export class ConversationMessage extends TsEmbed {
|
|
|
39
39
|
super(container, viewConfig);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
protected getEmbedParamsObject() {
|
|
43
|
+
const queryParams = this.getBaseQueryParams();
|
|
44
|
+
queryParams[Param.HideActions] = [...(queryParams[Param.HideActions] ?? [])];
|
|
45
|
+
queryParams[Param.isSpotterAgentEmbed] = true;
|
|
46
|
+
return queryParams;
|
|
47
|
+
}
|
|
48
|
+
|
|
42
49
|
public getIframeSrc() {
|
|
43
50
|
const {
|
|
44
51
|
sessionId,
|
|
@@ -49,10 +56,8 @@ export class ConversationMessage extends TsEmbed {
|
|
|
49
56
|
messageId,
|
|
50
57
|
} = this.viewConfig;
|
|
51
58
|
const path = 'conv-assist-answer';
|
|
52
|
-
const queryParams = this.
|
|
59
|
+
const queryParams = this.getEmbedParamsObject();
|
|
53
60
|
|
|
54
|
-
queryParams[Param.HideActions] = [...(queryParams[Param.HideActions] ?? [])];
|
|
55
|
-
queryParams[Param.isSpotterAgentEmbed] = true;
|
|
56
61
|
let query = '';
|
|
57
62
|
const queryParamsString = getQueryParamString(queryParams, true);
|
|
58
63
|
if (queryParamsString) {
|
|
@@ -196,7 +196,7 @@ export class SpotterEmbed extends TsEmbed {
|
|
|
196
196
|
super(container, viewConfig);
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
-
|
|
199
|
+
protected getEmbedParamsObject() {
|
|
200
200
|
const {
|
|
201
201
|
worksheetId,
|
|
202
202
|
searchOptions,
|
|
@@ -210,7 +210,7 @@ export class SpotterEmbed extends TsEmbed {
|
|
|
210
210
|
runtimeParameters,
|
|
211
211
|
excludeRuntimeParametersfromURL,
|
|
212
212
|
} = this.viewConfig;
|
|
213
|
-
|
|
213
|
+
|
|
214
214
|
if (!worksheetId) {
|
|
215
215
|
this.handleError(ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND);
|
|
216
216
|
}
|
|
@@ -235,6 +235,21 @@ export class SpotterEmbed extends TsEmbed {
|
|
|
235
235
|
queryParams[Param.HideSampleQuestions] = !!hideSampleQuestions;
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
+
return queryParams;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
public getIframeSrc(): string {
|
|
242
|
+
const {
|
|
243
|
+
worksheetId,
|
|
244
|
+
searchOptions,
|
|
245
|
+
runtimeFilters,
|
|
246
|
+
excludeRuntimeFiltersfromURL,
|
|
247
|
+
runtimeParameters,
|
|
248
|
+
excludeRuntimeParametersfromURL,
|
|
249
|
+
} = this.viewConfig;
|
|
250
|
+
const path = 'insights/conv-assist';
|
|
251
|
+
const queryParams = this.getEmbedParamsObject();
|
|
252
|
+
|
|
238
253
|
let query = '';
|
|
239
254
|
const queryParamsString = getQueryParamString(queryParams, true);
|
|
240
255
|
if (queryParamsString) {
|
|
@@ -23,7 +23,7 @@ export class HostEventClient {
|
|
|
23
23
|
* @param {any} data Data to send with the host event
|
|
24
24
|
* @returns {Promise<any>} - the response from the process trigger
|
|
25
25
|
*/
|
|
26
|
-
protected async processTrigger(message: HostEvent, data: any): Promise<any> {
|
|
26
|
+
protected async processTrigger(message: HostEvent, data: any, context?: any): Promise<any> {
|
|
27
27
|
if (!this.iFrame) {
|
|
28
28
|
throw new Error('Iframe element is not set');
|
|
29
29
|
}
|
|
@@ -34,6 +34,7 @@ export class HostEventClient {
|
|
|
34
34
|
message,
|
|
35
35
|
thoughtspotHost,
|
|
36
36
|
data,
|
|
37
|
+
context,
|
|
37
38
|
);
|
|
38
39
|
}
|
|
39
40
|
|
|
@@ -65,8 +66,9 @@ export class HostEventClient {
|
|
|
65
66
|
public async hostEventFallback(
|
|
66
67
|
hostEvent: HostEvent,
|
|
67
68
|
data: any,
|
|
69
|
+
context?: any,
|
|
68
70
|
): Promise<any> {
|
|
69
|
-
return this.processTrigger(hostEvent, data);
|
|
71
|
+
return this.processTrigger(hostEvent, data, context);
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
/**
|
|
@@ -132,9 +134,11 @@ export class HostEventClient {
|
|
|
132
134
|
public async triggerHostEvent<
|
|
133
135
|
HostEventT extends HostEvent,
|
|
134
136
|
PayloadT,
|
|
137
|
+
ContextT,
|
|
135
138
|
>(
|
|
136
139
|
hostEvent: HostEventT,
|
|
137
140
|
payload?: TriggerPayload<PayloadT, HostEventT>,
|
|
141
|
+
context?: ContextT,
|
|
138
142
|
): Promise<TriggerResponse<PayloadT, HostEventT>> {
|
|
139
143
|
switch (hostEvent) {
|
|
140
144
|
case HostEvent.Pin:
|
|
@@ -144,7 +148,7 @@ export class HostEventClient {
|
|
|
144
148
|
payload as HostEventRequest<HostEvent.SaveAnswer>,
|
|
145
149
|
) as any;
|
|
146
150
|
default:
|
|
147
|
-
return this.hostEventFallback(hostEvent, payload);
|
|
151
|
+
return this.hostEventFallback(hostEvent, payload, context as any);
|
|
148
152
|
}
|
|
149
153
|
}
|
|
150
154
|
}
|
|
@@ -183,6 +183,36 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
183
183
|
});
|
|
184
184
|
});
|
|
185
185
|
|
|
186
|
+
test('should set isLinkParametersEnabled to true in url', async () => {
|
|
187
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
188
|
+
isLinkParametersEnabled: true,
|
|
189
|
+
...defaultViewConfig,
|
|
190
|
+
liveboardId,
|
|
191
|
+
} as LiveboardViewConfig);
|
|
192
|
+
liveboardEmbed.render();
|
|
193
|
+
await executeAfterWait(() => {
|
|
194
|
+
expectUrlMatchesWithParams(
|
|
195
|
+
getIFrameSrc(),
|
|
196
|
+
`http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isLinkParametersEnabled=true${prefixParams}#/embed/viz/${liveboardId}`,
|
|
197
|
+
);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
test('should set isLinkParametersEnabled to false in url', async () => {
|
|
202
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
203
|
+
isLinkParametersEnabled: false,
|
|
204
|
+
...defaultViewConfig,
|
|
205
|
+
liveboardId,
|
|
206
|
+
} as LiveboardViewConfig);
|
|
207
|
+
liveboardEmbed.render();
|
|
208
|
+
await executeAfterWait(() => {
|
|
209
|
+
expectUrlMatchesWithParams(
|
|
210
|
+
getIFrameSrc(),
|
|
211
|
+
`http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isLinkParametersEnabled=false${prefixParams}#/embed/viz/${liveboardId}`,
|
|
212
|
+
);
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
|
|
186
216
|
test('should set visible actions as empty array', async () => {
|
|
187
217
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
188
218
|
visibleActions: [],
|
|
@@ -657,6 +687,7 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
657
687
|
test('navigateToLiveboard should trigger the navigate event with the correct path', async (done) => {
|
|
658
688
|
mockMessageChannel();
|
|
659
689
|
// mock getSessionInfo
|
|
690
|
+
|
|
660
691
|
mockGetSessionInfo();
|
|
661
692
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
662
693
|
...defaultViewConfig,
|
|
@@ -684,6 +715,13 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
684
715
|
mockMessageChannel();
|
|
685
716
|
|
|
686
717
|
// mock getSessionInfo
|
|
718
|
+
jest.spyOn(SessionInfoService, 'getSessionInfo').mockResolvedValue({
|
|
719
|
+
releaseVersion: '1.0.0',
|
|
720
|
+
userGUID: '1234567890',
|
|
721
|
+
currentOrgId: 1,
|
|
722
|
+
privileges: [],
|
|
723
|
+
mixpanelToken: '1234567890',
|
|
724
|
+
});
|
|
687
725
|
mockGetSessionInfo();
|
|
688
726
|
|
|
689
727
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
@@ -779,6 +817,12 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
779
817
|
});
|
|
780
818
|
|
|
781
819
|
describe('PreRender flow for liveboard embed', () => {
|
|
820
|
+
beforeAll(() => {
|
|
821
|
+
init({
|
|
822
|
+
thoughtSpotHost: "http://tshost",
|
|
823
|
+
authType: AuthType.None,
|
|
824
|
+
});
|
|
825
|
+
});
|
|
782
826
|
test('it should preRender generic with liveboard id is not passed', async (done) => {
|
|
783
827
|
const consoleSpy = jest.spyOn(console, 'error');
|
|
784
828
|
const libEmbed = new LiveboardEmbed(getRootEl(), {
|
package/src/embed/liveboard.ts
CHANGED
|
@@ -440,6 +440,12 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
440
440
|
* embedded Liveboard or visualization.
|
|
441
441
|
*/
|
|
442
442
|
protected getEmbedParams() {
|
|
443
|
+
const params = this.getEmbedParamsObject();
|
|
444
|
+
const queryParams = getQueryParamString(params, true);
|
|
445
|
+
return queryParams;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
protected getEmbedParamsObject() {
|
|
443
449
|
let params: any = {};
|
|
444
450
|
params = this.getBaseQueryParams(params);
|
|
445
451
|
const {
|
|
@@ -471,6 +477,7 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
471
477
|
isLiveboardStylingAndGroupingEnabled,
|
|
472
478
|
isPNGInScheduledEmailsEnabled = false,
|
|
473
479
|
showSpotterLimitations,
|
|
480
|
+
isLinkParametersEnabled,
|
|
474
481
|
} = this.viewConfig;
|
|
475
482
|
|
|
476
483
|
const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
|
|
@@ -546,6 +553,10 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
546
553
|
params[Param.ShowSpotterLimitations] = showSpotterLimitations;
|
|
547
554
|
}
|
|
548
555
|
|
|
556
|
+
if (isLinkParametersEnabled !== undefined) {
|
|
557
|
+
params[Param.isLinkParametersEnabled] = isLinkParametersEnabled;
|
|
558
|
+
}
|
|
559
|
+
|
|
549
560
|
params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
|
|
550
561
|
params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
|
|
551
562
|
params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
|
|
@@ -557,7 +568,7 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
557
568
|
params[Param.LiveboardXLSXCSVDownload] = !!liveboardXLSXCSVDownload;
|
|
558
569
|
const queryParams = getQueryParamString(params, true);
|
|
559
570
|
|
|
560
|
-
return
|
|
571
|
+
return params;
|
|
561
572
|
}
|
|
562
573
|
|
|
563
574
|
private getIframeSuffixSrc(liveboardId: string, vizId: string, activeTabId: string) {
|
package/src/embed/sage.ts
CHANGED
|
@@ -153,12 +153,7 @@ export class SageEmbed extends V1Embed {
|
|
|
153
153
|
super(domSelector, viewConfig);
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
|
|
157
|
-
* Constructs a map of parameters to be passed on to the
|
|
158
|
-
* embedded Eureka or Sage search page.
|
|
159
|
-
* @returns {string} query string
|
|
160
|
-
*/
|
|
161
|
-
protected getEmbedParams(): string {
|
|
156
|
+
protected getEmbedParamsObject() {
|
|
162
157
|
const {
|
|
163
158
|
disableWorksheetChange,
|
|
164
159
|
hideWorksheetSelector,
|
|
@@ -184,6 +179,16 @@ export class SageEmbed extends V1Embed {
|
|
|
184
179
|
params[Param.IsProductTour] = !!isProductTour;
|
|
185
180
|
params[Param.HideSageAnswerHeader] = !!hideSageAnswerHeader;
|
|
186
181
|
|
|
182
|
+
return params;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Constructs a map of parameters to be passed on to the
|
|
187
|
+
* embedded Eureka or Sage search page.
|
|
188
|
+
* @returns {string} query string
|
|
189
|
+
*/
|
|
190
|
+
protected getEmbedParams(): string {
|
|
191
|
+
const params = this.getEmbedParamsObject();
|
|
187
192
|
return getQueryParamString(params, true);
|
|
188
193
|
}
|
|
189
194
|
|
|
@@ -194,15 +199,15 @@ export class SageEmbed extends V1Embed {
|
|
|
194
199
|
*/
|
|
195
200
|
public getIFrameSrc(): string {
|
|
196
201
|
const path = 'eureka';
|
|
197
|
-
const postHashObj = {};
|
|
202
|
+
const postHashObj: Record<string, any> = {};
|
|
198
203
|
const tsPostHashParams = this.getThoughtSpotPostUrlParams();
|
|
199
204
|
const {
|
|
200
205
|
dataSource, searchOptions,
|
|
201
206
|
} = this.viewConfig;
|
|
202
207
|
|
|
203
|
-
if (dataSource) postHashObj[Param.WorksheetId] = dataSource;
|
|
208
|
+
if (dataSource) (postHashObj as any)[Param.WorksheetId] = dataSource;
|
|
204
209
|
if (searchOptions?.searchQuery && searchOptions.executeSearch) {
|
|
205
|
-
postHashObj[Param.executeSearch] = true;
|
|
210
|
+
(postHashObj as any)[Param.executeSearch] = true;
|
|
206
211
|
}
|
|
207
212
|
|
|
208
213
|
let sagePostHashParams = new URLSearchParams(postHashObj).toString();
|
package/src/embed/search-bar.tsx
CHANGED
|
@@ -118,12 +118,7 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
118
118
|
this.viewConfig = viewConfig;
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
|
|
122
|
-
* Construct the URL of the embedded ThoughtSpot search to be
|
|
123
|
-
* loaded in the iframe
|
|
124
|
-
* @param dataSources A list of data source GUIDs
|
|
125
|
-
*/
|
|
126
|
-
private getIFrameSrc() {
|
|
121
|
+
protected getEmbedParamsObject() {
|
|
127
122
|
const {
|
|
128
123
|
searchOptions,
|
|
129
124
|
dataSource,
|
|
@@ -131,7 +126,6 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
131
126
|
useLastSelectedSources = false,
|
|
132
127
|
excludeSearchTokenStringFromURL,
|
|
133
128
|
} = this.viewConfig;
|
|
134
|
-
const path = 'search-bar-embed';
|
|
135
129
|
const queryParams = this.getBaseQueryParams();
|
|
136
130
|
|
|
137
131
|
queryParams[Param.HideActions] = [...(queryParams[Param.HideActions] ?? [])];
|
|
@@ -159,6 +153,19 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
159
153
|
queryParams[Param.UseLastSelectedDataSource] = false;
|
|
160
154
|
}
|
|
161
155
|
queryParams[Param.searchEmbed] = true;
|
|
156
|
+
|
|
157
|
+
return queryParams;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Construct the URL of the embedded ThoughtSpot search to be
|
|
162
|
+
* loaded in the iframe
|
|
163
|
+
* @param dataSources A list of data source GUIDs
|
|
164
|
+
*/
|
|
165
|
+
private getIFrameSrc() {
|
|
166
|
+
const queryParams = this.getEmbedParamsObject();
|
|
167
|
+
const path = 'search-bar-embed';
|
|
168
|
+
|
|
162
169
|
let query = '';
|
|
163
170
|
const queryParamsString = getQueryParamString(queryParams, true);
|
|
164
171
|
if (queryParamsString) {
|