@thoughtspot/visual-embed-sdk 1.35.6 → 1.35.8

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 (123) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/embed/search-bar.d.ts +24 -1
  3. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  4. package/cjs/src/embed/search-bar.js +13 -2
  5. package/cjs/src/embed/search-bar.js.map +1 -1
  6. package/cjs/src/embed/search.d.ts +26 -1
  7. package/cjs/src/embed/search.d.ts.map +1 -1
  8. package/cjs/src/embed/search.js +16 -2
  9. package/cjs/src/embed/search.js.map +1 -1
  10. package/cjs/src/embed/search.spec.js +49 -0
  11. package/cjs/src/embed/search.spec.js.map +1 -1
  12. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  13. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  14. package/cjs/src/embed/searchEmbed-basic-auth.spec.js +104 -0
  15. package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  16. package/cjs/src/embed/ts-embed.d.ts +4 -1
  17. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  18. package/cjs/src/embed/ts-embed.js +49 -32
  19. package/cjs/src/embed/ts-embed.js.map +1 -1
  20. package/cjs/src/embed/ts-embed.spec.js +176 -131
  21. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  22. package/cjs/src/hostEventsTypeMapping.d.ts +2 -0
  23. package/cjs/src/hostEventsTypeMapping.d.ts.map +1 -0
  24. package/cjs/src/hostEventsTypeMapping.js +4 -0
  25. package/cjs/src/hostEventsTypeMapping.js.map +1 -0
  26. package/cjs/src/types.d.ts +11 -0
  27. package/cjs/src/types.d.ts.map +1 -1
  28. package/cjs/src/utils/embedApi/contracts.d.ts +101 -0
  29. package/cjs/src/utils/embedApi/contracts.d.ts.map +1 -0
  30. package/cjs/src/utils/embedApi/contracts.js +17 -0
  31. package/cjs/src/utils/embedApi/contracts.js.map +1 -0
  32. package/cjs/src/utils/embedApi/embedApiClient.d.ts +12 -0
  33. package/cjs/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  34. package/cjs/src/utils/embedApi/embedApiClient.js +46 -0
  35. package/cjs/src/utils/embedApi/embedApiClient.js.map +1 -0
  36. package/cjs/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  37. package/cjs/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  38. package/cjs/src/utils/embedApi/processEmbedApi.js +18 -0
  39. package/cjs/src/utils/embedApi/processEmbedApi.js.map +1 -0
  40. package/dist/{index-Bp8mFlZ-.js → index-BBBimG1x.js} +1 -1
  41. package/dist/index-BGnxP5NY.js +7370 -0
  42. package/dist/index-CENLvayL.js +7370 -0
  43. package/dist/index-CbltIawo.js +7370 -0
  44. package/dist/index-CoQfqaHj.js +7370 -0
  45. package/dist/index-CzwzS0P4.js +7370 -0
  46. package/dist/index-DFwi_pV_.js +7370 -0
  47. package/dist/index-DOIjN0N_.js +7370 -0
  48. package/dist/index-DYBx8SuE.js +7370 -0
  49. package/dist/index-DaLHJaLd.js +7370 -0
  50. package/dist/index-DnJX-gN2.js +7370 -0
  51. package/dist/index-nWevLycs.js +7370 -0
  52. package/dist/src/embed/search-bar.d.ts +24 -1
  53. package/dist/src/embed/search-bar.d.ts.map +1 -1
  54. package/dist/src/embed/search.d.ts +26 -1
  55. package/dist/src/embed/search.d.ts.map +1 -1
  56. package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  57. package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  58. package/dist/src/embed/ts-embed.d.ts +4 -1
  59. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  60. package/dist/src/hostEventsTypeMapping.d.ts +2 -0
  61. package/dist/src/hostEventsTypeMapping.d.ts.map +1 -0
  62. package/dist/src/types.d.ts +11 -0
  63. package/dist/src/types.d.ts.map +1 -1
  64. package/dist/src/utils/embedApi/contracts.d.ts +101 -0
  65. package/dist/src/utils/embedApi/contracts.d.ts.map +1 -0
  66. package/dist/src/utils/embedApi/embedApiClient.d.ts +12 -0
  67. package/dist/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  68. package/dist/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  69. package/dist/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  70. package/dist/tsembed-react.es.js +81 -39
  71. package/dist/tsembed-react.js +80 -38
  72. package/dist/tsembed.es.js +81 -39
  73. package/dist/tsembed.js +80 -38
  74. package/dist/visual-embed-sdk-react-full.d.ts +62 -0
  75. package/dist/visual-embed-sdk-react.d.ts +62 -0
  76. package/dist/visual-embed-sdk.d.ts +62 -0
  77. package/lib/package.json +1 -1
  78. package/lib/src/embed/search-bar.d.ts +24 -1
  79. package/lib/src/embed/search-bar.d.ts.map +1 -1
  80. package/lib/src/embed/search-bar.js +13 -2
  81. package/lib/src/embed/search-bar.js.map +1 -1
  82. package/lib/src/embed/search.d.ts +26 -1
  83. package/lib/src/embed/search.d.ts.map +1 -1
  84. package/lib/src/embed/search.js +16 -2
  85. package/lib/src/embed/search.js.map +1 -1
  86. package/lib/src/embed/search.spec.js +51 -2
  87. package/lib/src/embed/search.spec.js.map +1 -1
  88. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  89. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  90. package/lib/src/embed/searchEmbed-basic-auth.spec.js +101 -0
  91. package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  92. package/lib/src/embed/ts-embed.d.ts +4 -1
  93. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  94. package/lib/src/embed/ts-embed.js +49 -32
  95. package/lib/src/embed/ts-embed.js.map +1 -1
  96. package/lib/src/embed/ts-embed.spec.js +176 -131
  97. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  98. package/lib/src/hostEventsTypeMapping.d.ts +2 -0
  99. package/lib/src/hostEventsTypeMapping.d.ts.map +1 -0
  100. package/lib/src/hostEventsTypeMapping.js +2 -0
  101. package/lib/src/hostEventsTypeMapping.js.map +1 -0
  102. package/lib/src/types.d.ts +11 -0
  103. package/lib/src/types.d.ts.map +1 -1
  104. package/lib/src/utils/embedApi/contracts.d.ts +101 -0
  105. package/lib/src/utils/embedApi/contracts.d.ts.map +1 -0
  106. package/lib/src/utils/embedApi/contracts.js +14 -0
  107. package/lib/src/utils/embedApi/contracts.js.map +1 -0
  108. package/lib/src/utils/embedApi/embedApiClient.d.ts +12 -0
  109. package/lib/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  110. package/lib/src/utils/embedApi/embedApiClient.js +42 -0
  111. package/lib/src/utils/embedApi/embedApiClient.js.map +1 -0
  112. package/lib/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  113. package/lib/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  114. package/lib/src/utils/embedApi/processEmbedApi.js +14 -0
  115. package/lib/src/utils/embedApi/processEmbedApi.js.map +1 -0
  116. package/lib/src/visual-embed-sdk.d.ts +65 -3
  117. package/package.json +1 -1
  118. package/src/embed/search-bar.tsx +36 -2
  119. package/src/embed/search.spec.ts +66 -1
  120. package/src/embed/search.ts +38 -1
  121. package/src/embed/ts-embed.spec.ts +198 -137
  122. package/src/embed/ts-embed.ts +52 -32
  123. package/src/types.ts +12 -0
@@ -0,0 +1,9 @@
1
+ import { HostEvent } from '../../types';
2
+ /**
3
+ * Check if the event is an embed API event.
4
+ * @param messageType
5
+ * @param payload
6
+ * @returns boolean
7
+ */
8
+ export declare function isEmbedApiEvent(messageType: HostEvent, payload: any): boolean;
9
+ //# sourceMappingURL=processEmbedApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processEmbedApi.d.ts","sourceRoot":"","sources":["../../../../src/utils/embedApi/processEmbedApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,aAAa,CAAC;AAMpD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAK7E"}
@@ -0,0 +1,14 @@
1
+ import { HostEvent } from '../../types';
2
+ /**
3
+ * Check if the event is an embed API event.
4
+ * @param messageType
5
+ * @param payload
6
+ * @returns boolean
7
+ */
8
+ export function isEmbedApiEvent(messageType, payload) {
9
+ if (messageType === HostEvent.Pin && typeof payload === 'object') {
10
+ return true;
11
+ }
12
+ return false;
13
+ }
14
+ //# sourceMappingURL=processEmbedApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processEmbedApi.js","sourceRoot":"","sources":["../../../../src/utils/embedApi/processEmbedApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,aAAa,CAAC;AAMpD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,WAAsB,EAAE,OAAY;IAChE,IAAI,WAAW,KAAK,SAAS,CAAC,GAAG,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC9D,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -1089,7 +1089,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
1089
1089
  * @summary Search embed
1090
1090
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
1091
1091
  */
1092
- import { DOMSelector, Action, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
1092
+ import { DOMSelector, Action, ViewConfig, DefaultAppInitData } from '@thoughtspot/visual-embed-sdk/types';
1093
1093
  import { TsEmbed } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
1094
1094
  /**
1095
1095
  * Configuration for search options.
@@ -1258,6 +1258,22 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
1258
1258
  * ```
1259
1259
  */
1260
1260
  searchOptions?: SearchOptions;
1261
+ /**
1262
+ * Exclude the search token string from the URL.
1263
+ * If set to true, the search token string is not appended to the URL.
1264
+ * @version: SDK: 1.35.7 | ThoughtSpot: 10.7.0.cl
1265
+ * @example
1266
+ * ```js
1267
+ * const embed = new SearchEmbed('#tsEmbed', {
1268
+ * searchOptions: {
1269
+ * searchTokenString: '[quantity purchased] [region]',
1270
+ * executeSearch: true,
1271
+ * },
1272
+ * excludeSearchTokenStringFromURL: true,
1273
+ * });
1274
+ * ```
1275
+ */
1276
+ excludeSearchTokenStringFromURL?: boolean;
1261
1277
  /**
1262
1278
  * The GUID of a saved answer to load initially.
1263
1279
  * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
@@ -1335,6 +1351,9 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
1335
1351
  focusSearchBarOnRender?: boolean;
1336
1352
  }
1337
1353
  export const HiddenActionItemByDefaultForSearchEmbed: Action[];
1354
+ export interface SearchAppInitData extends DefaultAppInitData {
1355
+ searchOptions?: SearchOptions;
1356
+ }
1338
1357
  /**
1339
1358
  * Embed ThoughtSpot search
1340
1359
  * @group Embed components
@@ -1345,6 +1364,12 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
1345
1364
  */
1346
1365
  protected viewConfig: SearchViewConfig;
1347
1366
  constructor(domSelector: DOMSelector, viewConfig: SearchViewConfig);
1367
+ protected getSearchInitData(): {
1368
+ searchOptions?: {
1369
+ searchTokenString: string;
1370
+ };
1371
+ };
1372
+ protected getAppInitData(): Promise<SearchAppInitData>;
1348
1373
  protected getEmbedParams(): string;
1349
1374
  /**
1350
1375
  * Construct the URL of the embedded ThoughtSpot search to be
@@ -1361,7 +1386,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
1361
1386
  }
1362
1387
 
1363
1388
  declare module '@thoughtspot/visual-embed-sdk/embed/search-bar' {
1364
- import { ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
1389
+ import { DefaultAppInitData, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
1365
1390
  import { TsEmbed } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
1366
1391
  import { SearchOptions } from '@thoughtspot/visual-embed-sdk/embed/search';
1367
1392
  /**
@@ -1429,6 +1454,25 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search-bar' {
1429
1454
  * ```
1430
1455
  */
1431
1456
  searchOptions?: SearchOptions;
1457
+ /**
1458
+ * Exclude the search token string from the URL.
1459
+ * If set to true, the search token string is not appended to the URL.
1460
+ * @version: SDK: 1.35.7 | ThoughtSpot: 10.7.0.cl
1461
+ * @example
1462
+ * ```js
1463
+ * const embed = new SearchEmbed('#tsEmbed', {
1464
+ * searchOptions: {
1465
+ * searchTokenString: '[quantity purchased] [region]',
1466
+ * executeSearch: true,
1467
+ * },
1468
+ * excludeSearchTokenStringFromURL: true,
1469
+ * });
1470
+ * ```
1471
+ */
1472
+ excludeSearchTokenStringFromURL?: boolean;
1473
+ }
1474
+ export interface SearchAppInitData extends DefaultAppInitData {
1475
+ searchOptions: SearchOptions;
1432
1476
  }
1433
1477
  /**
1434
1478
  * Embed ThoughtSpot search bar
@@ -1446,6 +1490,10 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search-bar' {
1446
1490
  * Render the embedded ThoughtSpot search
1447
1491
  */
1448
1492
  render(): Promise<SearchBarEmbed>;
1493
+ protected getSearchInitData(): {
1494
+ searchOptions: SearchOptions;
1495
+ };
1496
+ protected getAppInitData(): Promise<SearchAppInitData>;
1449
1497
  }
1450
1498
  }
1451
1499
 
@@ -6335,6 +6383,17 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
6335
6383
  */
6336
6384
  TRACE = "TRACE"
6337
6385
  }
6386
+ export interface DefaultAppInitData {
6387
+ customisations: CustomisationsInterface;
6388
+ authToken: string;
6389
+ runtimeFilterParams: string | null;
6390
+ runtimeParameterParams: string | null;
6391
+ hiddenHomepageModules: HomepageModule[];
6392
+ reorderedHomepageModules: string[];
6393
+ hostConfig: Record<string, any>;
6394
+ hiddenHomeLeftNavItems: string[];
6395
+ customVariablesForThirdPartyTools: Record<string, any>;
6396
+ }
6338
6397
  }
6339
6398
 
6340
6399
  declare module '@thoughtspot/visual-embed-sdk/css-variables' {
@@ -7272,7 +7331,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/ts-embed' {
7272
7331
  */
7273
7332
  import { TriggerPayload, TriggerResponse, UIPassthroughArrayResponse, UIPassthroughEvent, UIPassthroughRequest } from '@thoughtspot/visual-embed-sdk/embed/hostEventClient/contracts';
7274
7333
  import { AnswerService } from '@thoughtspot/visual-embed-sdk/utils/graphql/answerService/answerService';
7275
- import { DOMSelector, HostEvent, EmbedEvent, MessageCallback, EmbedConfig, MessageOptions, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
7334
+ import { DOMSelector, HostEvent, EmbedEvent, MessageCallback, EmbedConfig, MessageOptions, ViewConfig, DefaultAppInitData } from '@thoughtspot/visual-embed-sdk/types';
7276
7335
  import { HostEventClient } from '@thoughtspot/visual-embed-sdk/embed/hostEventClient/host-event-client';
7277
7336
  /**
7278
7337
  * Global prefix for all Thoughtspot postHash Params.
@@ -7328,6 +7387,9 @@ declare module '@thoughtspot/visual-embed-sdk/embed/ts-embed' {
7328
7387
  * @param error The error message or object
7329
7388
  */
7330
7389
  protected handleError(error: string | Record<string, unknown>): void;
7390
+ protected getAuthTokenForCookielessInit(): Promise<string>;
7391
+ protected getDefaultAppInitData(): Promise<DefaultAppInitData>;
7392
+ protected getAppInitData(): Promise<DefaultAppInitData>;
7331
7393
  /**
7332
7394
  * Constructs the base URL string to load the ThoughtSpot app.
7333
7395
  * @param query
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.35.6",
3
+ "version": "1.35.8",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -1,4 +1,4 @@
1
- import { Param, ViewConfig } from '../types';
1
+ import { DefaultAppInitData, Param, ViewConfig } from '../types';
2
2
  import { getQueryParamString } from '../utils';
3
3
  import { TsEmbed } from './ts-embed';
4
4
  import { SearchOptions } from './search';
@@ -79,6 +79,26 @@ export interface SearchBarViewConfig
79
79
  * ```
80
80
  */
81
81
  searchOptions?: SearchOptions;
82
+ /**
83
+ * Exclude the search token string from the URL.
84
+ * If set to true, the search token string is not appended to the URL.
85
+ * @version: SDK: 1.35.7 | ThoughtSpot: 10.7.0.cl
86
+ * @example
87
+ * ```js
88
+ * const embed = new SearchEmbed('#tsEmbed', {
89
+ * searchOptions: {
90
+ * searchTokenString: '[quantity purchased] [region]',
91
+ * executeSearch: true,
92
+ * },
93
+ * excludeSearchTokenStringFromURL: true,
94
+ * });
95
+ * ```
96
+ */
97
+ excludeSearchTokenStringFromURL?: boolean;
98
+ }
99
+
100
+ export interface SearchAppInitData extends DefaultAppInitData {
101
+ searchOptions: SearchOptions;
82
102
  }
83
103
 
84
104
  /**
@@ -110,6 +130,7 @@ export class SearchBarEmbed extends TsEmbed {
110
130
  dataSource,
111
131
  dataSources,
112
132
  useLastSelectedSources = false,
133
+ excludeSearchTokenStringFromURL,
113
134
  } = this.viewConfig;
114
135
  const path = 'search-bar-embed';
115
136
  const queryParams = this.getBaseQueryParams();
@@ -122,7 +143,7 @@ export class SearchBarEmbed extends TsEmbed {
122
143
  if (dataSource) {
123
144
  queryParams[Param.DataSources] = `["${dataSource}"]`;
124
145
  }
125
- if (searchOptions?.searchTokenString) {
146
+ if (searchOptions?.searchTokenString && !excludeSearchTokenStringFromURL) {
126
147
  queryParams[Param.searchTokenString] = encodeURIComponent(
127
148
  searchOptions.searchTokenString,
128
149
  );
@@ -157,4 +178,17 @@ export class SearchBarEmbed extends TsEmbed {
157
178
  await this.renderIFrame(src);
158
179
  return this;
159
180
  }
181
+
182
+ protected getSearchInitData() {
183
+ return {
184
+ searchOptions: this.viewConfig.excludeSearchTokenStringFromURL
185
+ ? this.viewConfig.searchOptions
186
+ : null,
187
+ };
188
+ }
189
+
190
+ protected async getAppInitData(): Promise<SearchAppInitData> {
191
+ const defaultAppInitData = await super.getAppInitData();
192
+ return { ...defaultAppInitData, ...this.getSearchInitData() };
193
+ }
160
194
  }
@@ -2,10 +2,13 @@ import {
2
2
  SearchEmbed,
3
3
  HiddenActionItemByDefaultForSearchEmbed,
4
4
  DataPanelCustomColumnGroupsAccordionState,
5
+ SearchOptions,
5
6
  } from './search';
6
7
  import * as authInstance from '../auth';
7
8
  import { init } from '../index';
8
- import { Action, AuthType, RuntimeFilterOp } from '../types';
9
+ import {
10
+ Action, AuthType, EmbedEvent, RuntimeFilterOp,
11
+ } from '../types';
9
12
  import {
10
13
  executeAfterWait,
11
14
  getDocumentBody,
@@ -14,6 +17,8 @@ import {
14
17
  fixedEncodeURI,
15
18
  defaultParamsWithoutHiddenActions as defaultParams,
16
19
  expectUrlMatchesWithParams,
20
+ getIFrameEl,
21
+ postMessageToParent,
17
22
  } from '../test/test-utils';
18
23
  import { version } from '../../package.json';
19
24
  import { SearchBarEmbed } from './search-bar';
@@ -533,4 +538,64 @@ describe('Search embed tests', () => {
533
538
  );
534
539
  });
535
540
  });
541
+
542
+ test('with excludeSearchTokenStringFromURL', async () => {
543
+ const searchOptions: SearchOptions = {
544
+ searchTokenString: '[commit date][revenue]',
545
+ executeSearch: true,
546
+ };
547
+ const searchEmbed = new SearchEmbed(getRootEl(), {
548
+ ...defaultViewConfig,
549
+ searchOptions,
550
+ excludeSearchTokenStringFromURL: true,
551
+ });
552
+ const mockEmbedEventPayload = {
553
+ type: EmbedEvent.APP_INIT,
554
+ data: {},
555
+ };
556
+ searchEmbed.render();
557
+
558
+ const mockPort: any = {
559
+ postMessage: jest.fn(),
560
+ };
561
+ await executeAfterWait(() => {
562
+ const iframe = getIFrameEl();
563
+ postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
564
+ });
565
+
566
+ await executeAfterWait(() => {
567
+ expectUrlMatchesWithParams(
568
+ getIFrameSrc(),
569
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
570
+ );
571
+ });
572
+
573
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
574
+ type: EmbedEvent.APP_INIT,
575
+ data: expect.objectContaining({
576
+ searchOptions: {
577
+ searchTokenString: '[commit date][revenue]',
578
+ },
579
+ }),
580
+ });
581
+ });
582
+
583
+ test('without excludeSearchTokenStringFromURL', async () => {
584
+ const searchOptions: SearchOptions = {
585
+ searchTokenString: '[commit date][revenue]',
586
+ executeSearch: true,
587
+ };
588
+ const searchEmbed = new SearchEmbed(getRootEl(), {
589
+ ...defaultViewConfig,
590
+ searchOptions,
591
+ excludeSearchTokenStringFromURL: false,
592
+ });
593
+ searchEmbed.render();
594
+ await executeAfterWait(() => {
595
+ expectUrlMatchesWithParams(
596
+ getIFrameSrc(),
597
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false&searchTokenString=[commit date][revenue]${prefixParams}#/embed/saved-answer/${answerId}`,
598
+ );
599
+ });
600
+ });
536
601
  });
@@ -12,6 +12,7 @@ import {
12
12
  Param,
13
13
  Action,
14
14
  ViewConfig,
15
+ DefaultAppInitData,
15
16
  } from '../types';
16
17
  import {
17
18
  getQueryParamString,
@@ -202,6 +203,22 @@ export interface SearchViewConfig
202
203
  * ```
203
204
  */
204
205
  searchOptions?: SearchOptions;
206
+ /**
207
+ * Exclude the search token string from the URL.
208
+ * If set to true, the search token string is not appended to the URL.
209
+ * @version: SDK: 1.35.7 | ThoughtSpot: 10.7.0.cl
210
+ * @example
211
+ * ```js
212
+ * const embed = new SearchEmbed('#tsEmbed', {
213
+ * searchOptions: {
214
+ * searchTokenString: '[quantity purchased] [region]',
215
+ * executeSearch: true,
216
+ * },
217
+ * excludeSearchTokenStringFromURL: true,
218
+ * });
219
+ * ```
220
+ */
221
+ excludeSearchTokenStringFromURL?: boolean;
205
222
  /**
206
223
  * The GUID of a saved answer to load initially.
207
224
  * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
@@ -287,6 +304,10 @@ export const HiddenActionItemByDefaultForSearchEmbed = [
287
304
  Action.AnswerDelete,
288
305
  ];
289
306
 
307
+ export interface SearchAppInitData extends DefaultAppInitData {
308
+ searchOptions?: SearchOptions;
309
+ }
310
+
290
311
  /**
291
312
  * Embed ThoughtSpot search
292
313
  * @group Embed components
@@ -319,6 +340,21 @@ export class SearchEmbed extends TsEmbed {
319
340
  return dataSourceMode;
320
341
  }
321
342
 
343
+ protected getSearchInitData() {
344
+ return {
345
+ ...(this.viewConfig.excludeSearchTokenStringFromURL ? {
346
+ searchOptions: {
347
+ searchTokenString: this.viewConfig.searchOptions?.searchTokenString,
348
+ },
349
+ } : {}),
350
+ };
351
+ }
352
+
353
+ protected async getAppInitData(): Promise<SearchAppInitData> {
354
+ const defaultAppInitData = await super.getAppInitData();
355
+ return { ...defaultAppInitData, ...this.getSearchInitData() };
356
+ }
357
+
322
358
  protected getEmbedParams(): string {
323
359
  const {
324
360
  hideResults,
@@ -340,6 +376,7 @@ export class SearchEmbed extends TsEmbed {
340
376
  dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL,
341
377
  focusSearchBarOnRender = true,
342
378
  excludeRuntimeParametersfromURL,
379
+ excludeSearchTokenStringFromURL,
343
380
  collapseSearchBar = true,
344
381
  } = this.viewConfig;
345
382
  const queryParams = this.getBaseQueryParams();
@@ -355,7 +392,7 @@ export class SearchEmbed extends TsEmbed {
355
392
  if (dataSource) {
356
393
  queryParams[Param.DataSources] = `["${dataSource}"]`;
357
394
  }
358
- if (searchOptions?.searchTokenString) {
395
+ if (searchOptions?.searchTokenString && !excludeSearchTokenStringFromURL) {
359
396
  queryParams[Param.searchTokenString] = encodeURIComponent(
360
397
  searchOptions.searchTokenString,
361
398
  );